인터페이스, abstract 클래스
사용 이유 : - 설계시 선언해두면 개발할 때 기능 구현에 집중 가능
- 공통적인 인터페이스, abstract 클래스를 선언해 놓으면, 선언과 구현 구분 가능.
Interface
- 인터페이스 내부에 선언된 메소드들은 몸통이 있으면 안됨. 선언만 하기.
- 클래스에 인터페이스 적용시 public class 클래스이름 implements 인터페이스나열.
abstract 클래스
- 클래스 선언 시 class 앞에 abstract 추가. public abstract class sample{}
- abstract로 선언된 메소드가 하나라도 있으면, 그 클래슨느 반드시 abstract로 선언되어야함
- abstract클래스는 몸통이 있는 메소드가 0개 이상 있어도 괜찮음. 인터페이스와 달리 static이나 final 메소드가 있어도 됨.
- implements 사용x
- 클래스에 abstract클래스 적용시, 상속과 동일하게 extends 사용
※ extends 클래스 뒤에는 클래스 단 하나, implements 뒤에는 인터페이스 여러개 가능
final
- 클래스가 final로 선언되어 있으면 상속해줄 수 없음
- 더이상 확장해선 안되거나, 상속받아서 변경되면 안되는 클래스일 때 final 선언
- 메소드를 final로 선언하면, 해당 메소드가 override되는 것을 막을 수 있음
- 변수에 final을 사용하면, 변수에 값을 재할당할 수 없음
- 인스턴스 변수, 클래스 변수 : 생성과 동시에 초기화
- 매개 변수, 지역 변수 : 선언할 때 반드시 초기화할 필요 없음
- 클래스에 사용시, 객체를 두번 이상 생성할 순 없지만, 클래스에 선언된 인스턴스 변수나 클래스 변수가 final은 아니므로 자유롭게 사용가능
enum
- 어떤 클래스가 상수만으로 만들어져 있을 경우에 사용.
- 열거형 클래스
- 상수들만 선언하기. 별도로 타입을 지정하거나 값 할당할 필요 없음
- switch문에서 효과적으로 사용
- 사용할 땐, 별도로 생성자 만들 필요없이 "enum클래스이름.상수이름"을 지정해서 사용. enum은 생성자 생성이 되지만, 생성자를 통해 객체를 생성할 순 없음.
- enum클래스도 생성자를 사용할 순 있지만 아무것도 명시하지 않은 package-private 와 private으로만 사용가능
- Enum클래스의 부모 클래스는 java.lang.Enum클래스임.
- toString()은 Overriding가능. finalize,hashCode,equls는 불가능
- compareTo(E e)메소드
'Languages > Java' 카테고리의 다른 글
[Java] 형변환, 다형성 (0) | 2023.08.22 |
---|---|
[Java] 상속 (0) | 2023.08.22 |
[Java] 패키지, 접근제어자 (0) | 2023.08.19 |
[Java] 매개 변수 지정 (0) | 2023.08.19 |
[Java] Static과 Static 블록 (0) | 2023.08.11 |