클래스가 이제 여러개임.
**extends**
( 클래스 )implements
( 인터페이스 )왜 use 가 아니라 re-use인가?
부모의 것을 뜯어 고쳐서 만드는 것 ( = 재사용 )
이웃의 것을 가져와서 쓸 수 있는대로 걍 사용하는 것 ( = 사용 )
자손은 조상의 모든 멤버를 상속받는다.
( 생성자, 초기화 블럭은 제외 )
자손의 멤버개수는 조상보다 적을 수 없다.
상속은 캡슐화가 깨질 수 있다.
조상의 변경은 자손에게 영향을 미친다.
( OCP 위배 → 개방-폐쇄 원칙 / 변경에는 열려있고, 수정에는 닫혀있어야 한다 )
한 클래스의 멤버변수로 다른 클래스를 선언하는 것 ( Composite )
작은 단위의 클래스를 먼저 만들고, 이들을 조합해서 하나의 커다란 클래스를 만든다.
뜯어고치는 게 아니고, 빌려 쓰는거다.
비중 높은 클래스 하나만을 상속관계로,
나머지는 포함관계로 진행한다. ( 클래스 간의 관계 )
클래스가 한 개가 아니라, 여러 개!!!
조상클래스로부터 상속받은 메서드의 내용
을
상속받은 클래스에 맞게 변경
하는 것을 **오버라이딩**
이라 한다.
오버라이딩 조건
**protected**
라면, 범위가 같거나 넓은 **protected**
나 **public**
으로만 변경할 수 있다.**오버로딩은 클래스 하나에서!!!!**
*
을 쓰는 것보다,*
하면 메모리에 다 올라오나? 그건 아니다! 비효율적이지는 않다. ( = new로 올릴 때만 메모리가 올라간다. )import 내용을 표시해주면, 내가 어떤 코드를 짜는지 다른 개발자가 유추하기가 쉽다.