1. 단원 요약
- 클래스를 정의할 때는
[접근제어자] [final/abstract] class 식별자 [extends 부모클래스] [implements 인터페이스] {}
와 같이 한다.- 중괄호 내에는 필드와 메소드를 선언한다.
- 인터페이스를 구현하는 클래스인 경우 인터페이스에 정의된 메소드를 구현해야 한다.
- 클래스의 접근제어자를 생략하는 경우 동일 패키지 내에 있는 다른 클래스에서 참조가 가능하다.
- 클래스가 다른 클래스 내에서 정의된 경우 이를 내부 클래스 또는 네스티드 클래스라 하고, 그렇지 않은 클래스를 외부 클래스 또는 톱레벨 클래스라 한다.
- 톱레벨 클래스는 public 또는 생략된 접근제어자만 가질 수 있다.
- final 메소드는 오버라이딩이 불가하다.
- final 클래스는 부모클래스가 될 수 없다.
- 부모 클래스를 확장하는 자식 클래스를 정의할 때 extends 키워드를 사용한다.
- public은 모든 곳에서 참조 가능하다.
- protected는 클래스 내부, 동일 패키지 내부, 자식클래스에서 참조 가능하다.
- 접근제어자가 생략된 경우 클래스 내부, 동일 패키지 내부에서 참조 가능하다.
- private는 클래스 내부에서만 참조 가능하다.
- final 필드는 선언과 동시에 초기화하여야 한다.
- static 필드는 인스턴스화 하지 않은 클래스의 식별자를 통해서 참조가 가능한 공유 필드이다.
- static이 아닌 필드는 인스턴스 필드라고 부르며, 각 객체가 배타적으로 소유한다.
- 메소드를 오버라이딩할 때는 부모클래스의 메소드와 식별자, 반환형이 일치해야 한다.
- 오버라이드 된 메소드의 접근제어자를 더 넓은 접근제어자로 변경할 수 있다.
- this를 사용하여 객체의 필드를 참조할 수 있다.
- 인스턴스 필드 또는 인스턴스 메소드를 참할 때는 this를 생략할 수 있다.
- super를 사용하여 부모클래스의 필드를 참조할 수 있다.
- this()와 super()는 생성자의 맨 앞 부분에 사용한다.
- this()는 동일한 클래스의 또다른 생성자를 호출하는 데 사용된다.
- super()는 부모클래스의 생성자를 호출하는 데 사용된다.
2. 연습문제 요약
- Java에는 전역 변수가 없다.
- public > protected > 생략 > private