[목차]
01. 상속
2) 클래스 상속
- 자식 클래스를 선언할 때 어떤 부모로부터 상속받을 것인지를 결정하고, 부모 클래스를 다음과 같이 extends 뒤에 기술한다. ex) public class 자식클래스 extends 부모클래스 { … }
- 다중 상속을 허용하지 않음. extends 뒤에 하나의 부모 클래스만 상속한다.
5) final 클래스와 final 메소드
- final 클래스는 부모 클래스가 될 수 없어 자식 클래스를 만들 수 없다.
- 메소드를 선언할 때 final 키워드를 붙이면 오버라이딩 할 수 없다.
- 부모 클래스를 상속해서 자식 클래스를 선언할 때,
부모 클래스에 선언된 final 메소드는 자식 클래스에서 재정의 할 수 없다.
ex ) public final void method( ) { … }
9) 객체 타입 확인
💡instanceof 연산자 ➡️ 객체 instanceof 타입;- 매개변수가 아니더라도 변수가 참조하는 객체의 타입을 확인할 때 사용한다.
- 좌항의 객체가 우항의 타입이면 true를 산출하고 그렇지 않으면 false를 산출한다.
10) 추상 클래스
💡추상 클래스 ➡️ 객체를 생성할 수 있는 실체 클래스들의 공통적인 필드나 메소드를 추출해서 선언한 클래스- 실체 클래스의 부모 역할. 공통적인 필드나 메소드를 물려받을 수 있다.
💡추상 클래스 선언 ➡️ abstract class 클래스명- new 연산자를 이용해서 객체를 직접 만들지 못하고 상속을 통해 자식 클래스만 만들 수 있다.
💡추상 메소드와 재정의 ➡️ 자식 클래스들이 가지고 있는 공통 메소드를 뽑아내어 추상 클래스로 작성할 때, 메소드 선언부만 동일하고 실행 내용은 자식 클래스마다 달라야 하는 경우 추상 메소드를 선언할 수 있다.- 일반 메소드 선언과의 차이점은 abstract 키워드가 붙고, 메소드 실행 내용인 줄괄호 { }가 없다.
02. 인터페이스
2) 인터페이스와 구현 클래스 선언
💡인터페이스 선언 ➡️ class 키워드 대신 interface 키워드를 사용합니다.- 접근 제한자로는 클래스와 마찬가지로 같은 패키지 내에서만 사용 가능한 default, 패키지와 상관없이 사용하는 public을 붙일 수 있다.
💡구현 클래스 선언 ➡️ 인터페이스에 정의된 추상 메소드에 대한 실행 내용이 구현됩니다.- implements 키워드는 해당 클래스가 인터페이스를 통해 사용할 수 있다는 표시이며, 인터페이스의 추상 메소드를 재정의한 메소드가 있다는 뜻
- 인터페이스는 참조 타입에 속하므로 인터페이스 변수에는 객체를 참조하고 있지 않다는 뜻으로 null을 대입할 수 있다. (MyCar mc = null;)
- 인터페이스를 통해 구현 객체를 사용하려면 인터페이스 변수에 구현 객체의 번지를 대입해야 한다. ( mc = new Car(); )
3) 상수 필드
💡인터페이스는 public static final 특성을 갖는 불변의 상수 필드를 멤버로 가질 수 있습니다. ➡️ public static final 타입 상수명 = 값;- 인터페이스에 선언된 필드는 모두 public static final 특성을 갖기 때문에 public static final을 생략해도 자동으로 컴파일 과정에서 붙는다.
- 상수명은 대문자로 작성하되, 서로 다른 단어로 구성되어 있을 경우에는 언더바(_)로 연결한다.
7) private 메소드
💡인터페이스의 상수 필드, 추상 메소드, 디폴트 메소드, 정적 메소드는 모두 public 접근 제한을 가지며 이를 생략하더라도 외부에서 접근이 가능합니다.- private 메소드는 디폴트 메소드 안에서만 호출이 가능하다.
- private 정적 메소드는 정적 메소드 안에서도 호출이 가능하다.
tag : #상속 #인터페이스
Uploaded by N2T