본문 바로가기

개발공부/JAVA

자바스터디 6주차 feat.백기선님 (상속)

자바 상속의 특징

 

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

 

6주차 과제: 상속 · Issue #6 · whiteship/live-study

목표 자바의 상속에 대해 학습하세요. 학습할 것 (필수) 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 마

github.com


참조

책: 명품자바프로그래밍
https://defacto-standard.tistory.com/413