항해99

22.8.11 TIL

밍튜 2022. 8. 11. 11:25

8.11 TIL

 

<OverRiding>

오버라이드 = 부모의 메소드를 무효화하는것

자식클래스에서 부모메소드랑 똑같은 메소드를 가지고 있으면 부모메소드가 무효화됨

 

하지만 변수는 extends한다고해서 자식클래스변수를 쓰는게아니라 부모클래스 변수그대로 나옴

 

오버로드의 단점을 오버라이드로 대체할수있음!

 

 

<추상클래스>

 

추상클래스 : 추상적인 것 (new 할수없다) ex) 가구클래스는 new할수없지만 의자클래스는 new해서 만들수있음

 

다시 오버라이드 정의하면 부모클래스와 자식클래스의 메소드가 동일하게 있을때 부모클래스의 메소드가 무효화됨

 

따라서 부모클래스를 추상클래스로 만들고 자식에게 오버라이드되는 메소드도

추상메서드로 만들수있음.  -> 즉, 추상클래스의 메서드는 자식클래스에서 강제로 구현해야됨!

 

추상메서드를 부모가 가지고 있으면 자식은 추상메서드를 반드시 구현해야한다.

 

Abstract method는 body를 가질수없고 자식클래스에서 바디를 구현해야한다

 

추상클래스내에 몸체가 있는 메서드도 만들수있다.

 

 

<추상클래스 = 미완성 설계도>

 

추상클래스는 즉 자식이 완성해야되는 미완성 설계도이다.

 

 

 

<인터페이스>

 

인터: 교차로

페이스 : 직면하다, 얼굴

 

인터체인지를 만나면 1시 3시 5시방향으로만 갈수있음

즉 12시 6시방향같이 다른방향으로는 못감 -> ‘행위에 대한 강제성’

 

인터페이스 = ‘일방적인 약속’(갑과 을이 있는 약속) <->프로토콜 = 공동의 약속

 

추상메서드는 꼭 자식클래스에서 바디를 구현해야되지만

인터페이스내의 메서드는 public abstract가 생략된 형태이다.

그래서 ! 추상클래스에서 인터페이스를 implements해서 인터페이스의 메서드들을 구현해주면(강제로해야됨) 자식클래스에서 인터페이스의 메서드들이 장착됨