Java/Java Concept

[Java] 상속2

군우 2018. 3. 5. 19:35

하위 클래스에서 상위 메소드를 다시 정의하기.


하위클래스에서 상위 클래스의 메소드를 똑같이 정의를 하면, 

하위클래스를 먼저 들리기 때문에 하위클래스의 메소드만 먼저 호출이 된다 .


겹치므로 상위 클래스의 생성자를 호출하고 싶을 때는  super. 상위메소드(); 이렇게 호출하면 된다.


그 비슷한 것으로 

Speaker bs = new BaseEnSpeaker();

bs.basemethod();  // 컴파일 에러.

이런 게 있다.   스피커가  base스피커보다 더 상위클래스인데

스피커를 참조하는 bs인스턴스로  하위단계인 base스피커의 메소드를 읽어오라는 명령이다. 고로 에러가 발생한다.

그렇다면 위의 섞은 인스턴스는 무슨 의미가 있는걸까?

bs가 참조하는 인스턴스를 스피커의 인스턴스로 인식해도 된다는 뜻이다.


하지만,  인스턴스 변수의경우 차이가 난다.