프로그래밍/JAVA

[JAVA의 정석]Ch7_다형성과 추상클래스

개발자 덕구🐾 2022. 7. 11. 15:38
728x90

 

 

1. 다형성 (Polymorphism)

 

상속 관계에 있을 경우, 조상 클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조하도록 하는 것이 가능하다. 

 

SmartTv s = new SmartTv();
Tv  t = new SmartTv();

 

둘 다 같은 타입의 인스턴스 (smartTv)이지만 참조변수의 타입에 따라 사용할 수 있는 멤버의 개수가 달라진다. 

t와 s로 접근할 수 있는 멤버들이 다르다.

 

 

 

반대로,

자손타입의 참조변수로 조상타입의 인스턴스를 참조하는 것은 불가능하다.

 

 

상속관계에 있는 클래스 사이에서는 참조변수도 형변환이 가능하다. 

조상타입의 참조변수로는 인스턴스의 멤버들을 모두 사용할 수 없기 때문에, 실제 인스턴스와 같은 타입의 참조변수로 형변환을 해야만 인스턴스의 모든 멤버들을 사용할 수 있다. 

 

 

 


 

 

 

2. 추상 클래스 (abstract class)

 

미완성 설계도 ( 미완성 메서드를 포함)에 비유할 수 있다. 

인스턴스를 생성할 수  없다. 상속을 통해서 구현해주어야 한다. 

 

 

최대한의 공통 부분 뽑아내기-!

 

2-1 . 추상 메서드 

메서드 = 선언부 + 구현부

 

선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 것 

이러한 추상 메서드를 만드는 이유는 상속받는 클래스에 따라 내용이 달리질 수 있기 때문이다. 

 

 

 

 


 

 

3. 인터페이스 (interface)

일종의 추상클래스이다. 

다만 추상클래스보다 더 추상화 정도가 높아서 일반적인 몸통을 가진 메서드 또는 멤버변수를 가질 수 없다.

오직 추상메서드와 상수만을 멤버변수로 가진다. 

 

 

몸통을 만들어주는 클래스를 작성해야하는데 이때는 키워드 'implements' (구현) 를 사용한다. 

 

 

인터페이스의 장점

 

1. 개발시간 단축

2. 표준화 가능

3. 서로 관계없는 클래스들에게 관계를 맺어줄 수 있다.

4. 독립적인 프로그래밍 

 

 

 

 

반응형