[Java] 상속 개념 복습
클래스 상속에 대한 개념을 설명할 수 있다.
부모 클래스가 가지는 멤버를 자식클래스가 물려받아 자신의 멤버인 것척럼 사용할 수 있도록 만든 기술
자바는 단일 상속을 지원한다. (모호성을 제거)
클래스 간의 상속 시에는 extends 키워드 사용
상속의 목적을 설명할 수 있다.
부모 클래스의 기능을 자식클래스에서 상속받아 코드를 재사용하는 것.
자식클래스는 부모 클래스가 가진 메소드를 사용할 수 있다. (private 멤버는 접근 불가)
상속의 장단점을 설명할 수 있다.
장점
새로운 클래스 작성 시 부모 클래스에서 작성된 코드를 이어받아 새로 작성하지 않아도 됨. 클래스의 재사용
클래스간 계층관계과 형성되어 다형성의 문법의 토대가 된다.
단점
부모클래스가 변경될 때 자식클래스에서 정상적인 동작을 할지 예측하기 어렵다.
자식클래스가 물려받아 사용하는 기능을 부모클래스에서 변경하기 어려움.
부모 클래스의 기능이 자식클래스에서 무의미 할 수 있다.
IS-A관계를 고려하여 상속이 필요한 경우를 구분할 수 있다.
새는 동물이다. -> 동물이 부모클래스이고, 새는 자식클래스이다.
자식 클래스는 부모 클래스 이다. 라는 의미임. 반대는 있을 수 없다. 동물은 새로 한정되지 않는다.
super.과 super()를 이해할 수 있다.
super 부모클래스의 인스턴스 주소를 보관하는 레퍼런스 변수.
자식 클래스 내의 모든 생성자와 메소드 내에서 부모클래스의 레퍼런스 변수를 사용할 수 있다.
super() 부모 생성자를 호출하는 구문. this()는 해당 클래스의 생성자를 호출하는 구문이다.
생성자 두 번 호출은 허용되지 않는다.
super()로 부모 클래스의 생성자를 호출했다면 자식클래스의 생성자는 this.으로 작성해준다.
오버라이딩에 대해 설명할 수 있다.
오버라이딩 이란 부모 클래스에서 상속 받은 메소드를 자식 클래스가 재정의 하여 사용하는 것이다.
오버라이딩 성립 요건에 대해 설명할 수 있다.
1. 메소드 이름 동일
2. 매소드 리턴타입 동일
3. 매개변수의 타입, 개수, 순서가 동일
4. private 메소드는 오버라이딩 불가능
5. 접근제한자는 부모메소드와 같거나 더 넓은 범위여야함.
6. final 키워드가 사용된 메소드는 오버라이딩 불가능
7. 예외처리는 같은 예외이거나 더 구체적(하위)인 예외를 처리해야함.
오버로딩과 오버라이딩을 구분하여 각각의 개념과 공통점, 차이점을 설명할 수 있다.
오버로딩은 같은 클래스 내에서 메소드의 이름을 동일하게 사용하기 위해 메소드 시그니처기 달라야 한다.
오버라이딩은 하위 클래스에서 부모클래스의 메소드를 재정의하기 위해 메소드의 시그니처가 모두 동일해야 한다.