자바 상속의 특징
1. 다중 상속을 지원하지 않는다. extends 다음에 하나의 클래스만 올 수 있다.
2. 상속의 횟수에 제한을 두지 않는다.
3. 자바 계층구조의 최상위는 java.lang.object이다.
- java.lang.object는 모든 클래스의 조상
- 모든 클래스는 java.lang.object를 자동 상속
super 키워드
: 슈퍼클래스의 생성자를 호출하는 키워드
: 생성자코드의 첫 라인에 와야한다
super()예시 : 부모의 생성자를 호출하게 됨
부모 클래스 A
class A{
public A(){
System.out.println("A의 기본 생성자");
}
public A(int a){
System.out.println("A의 매개변수 생성자"+a);
}
}
자식 클래스 B
class B extends A{
Public B(){
System.out.println("B의 기본 생성자");
}
Public B(int x){
Super(x); // 클래스 A의 매개면수 생성자를 호출하게됨
System.out.println("B의 매개변수 생성자");
}
}
메소드 오버라이딩
: 슈퍼클래스 메소드를 무시할 수 있다.
: 슈퍼클래스의 메소드를 동일한 이름으로 서브 클래스에서 재작성하는것
: 같은 이름, 같은 리턴타입, 같은 매개 변수 리스트
다이나믹 메소드 디스패치 (Dynamic Method Dispatch)
메소드 디스패치란?
: 어떤 메소드를 호출할지 결정하여 실제로 실행시키는 과정을 말함
추상 클래스
: 미완성된 메소드(추상메소드)를 포함하고 있다
: 추상클래스로 인스턴스는 생성 할 수 없다.
: 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다.
: 어느정도 틀을 제공해주는 메소드(추상메소드) + 자손 클래스로 부족한 부분을 채워서 = 100% 완성된 클래스로 사용
: 키워드 'abstract'를 붙여서 사용
final 키워드
: 클래스, 메소드, field 멤버에 사용가능
: field멤버에서 사용 : 상수 정의
: 클래스, 메소드 사용시 더이상 오버라이딩 할 수 없음
Object 클래스
: Object 클래스는 java.lang 패키지에 속한 클래스로서 자바 클래스 구조의 최상위에 있음.
: 모든 클래스는 Object의 서브 클래스 이다.
Object 클래스의 주요 메소드
protected Object clone() | 현 객체와 똑같은 객체를 만들어 리턴 |
boolean equals(Object obj) | obj가 가리키는 객체와 현재 객체가 비교하여 같으면 true 리턴 |
Class getClass() | 현 객체의 런타임 클래스를 리턴 |
int hashCode() | 현 객체에 대한 해시 코드 값 리턴 |
String toString() | 현 객체에 대한 스트링 코드를 표현을 리턴 |
void notify() | 현 객체에 대해 대기하고 있는 하나의 스레드를 깨운다 |
void notifyAll() | 현 객체에 대해 대기하고 있는 모든 스레드를 깨운다 |
void wait() | 다른 스레드가 깨울 때 까지 현재 스레드를 대기하게 한다. |
github.com/whiteship/live-study/issues/6
참조
책: 명품자바프로그래밍
https://defacto-standard.tistory.com/413
'개발공부 > JAVA' 카테고리의 다른 글
자바스터디 8주차 feat.백기선님 (인터페이스) (0) | 2021.01.05 |
---|---|
자바스터디 7주차 feat.백기선님 (패키지) (0) | 2021.01.05 |
자바스터디 5주차 feat.백기선님 (클래스/객체/메소드/생성자/this) (0) | 2020.12.15 |
[Java] Linked List 개념 / 구현 (0) | 2020.12.05 |
자바스터디 4주차 feat.백기선님 (선택문/조건문과 반복문) (0) | 2020.11.30 |