1. 상속
- 상속이란 하위 클래스(자식 클래스)가 상위 클래스(부모 클래스)의 모든것 (모든 필드, 메서드, 권한)을 받는것이다.
- 재산을 상속받는다고 생각하면 편하다.
- 상속된 부모 클래스는 자식 클래스안에 속한다.
그래서 부모클래스에 새로운코드가 추가되면 자식 클래스안에있는 클래스도 영향을 받는다.
- 상속은 extends로 상속받고 super로 호출한다.
부모 클래스의 상속
pubilc class Child extends Parent {
// 멤버 변수와 멤버 메소드 선언과 정의
}
부모 클래스의 호출
super();
- 실습


위의 예제를 보면 parent 클래스를 child 클래스에서 상속 받아 parent의 메소드를 호출하여 사용한다. 또한 parent의 job 변수또한 사용가능합니다.

위의 결과 값처럼 자식 클래스에서는 부모 클래스로 부터 상속받은 필드나 메소드도 사용가능하고 자신의 필드와 메소드를 선언해서 사용할 수 있음을 알 수 있습니다.

그렇다면 여러개의 부모를 상속받는 다중 상속도 가능할까?
자바에서는 다중 상속을 원칙적으로 허용 X 단일 상속만 가능하다.
하지만 인터페이스를 이용한다면 변칙적으로 가능하다.
2. 오버라이딩
- 메서드 오버라이딩이란 부모 클래스에서 정의한 것과 동일한 메소드를 --> 자식 클래스에서 다시 정의하는것
- 상속받은것을 그대로 이용해도 괜찮지만 필요한 동작만을 사용하기위해 재 정의해서 사용하는것을
'오버라이딩' 이라고 한다.
- 메소드 오버라이딩 이란 상속받은 부모 클래스를 재 정의해 사용하는것을 말한다.
- 상위 클래스의 내용을 하위 클래스에서 필요에 맞게 재정의 해서 사용하는것
- 자식 클래스의 메소드 선언은 부모 메소드와 같아야하고 리턴 타입 변경가능
- 부모클래스의 메소드보다 접근 제어자를 좁은것으로 변경X 더큰 범위 예외선언X

부모 클래스인 parent 클래스를 개선해서 오버라이딩 클래스에서 사용 (기능을 그대로 활용)


여기서 Parent p2 = new Child(); 참조가 허용되는 이유는 자바의 다형성 때문이다.
3. 오버로딩
- 오버라이딩과 단어는 비슷하지만 다른 개념이다.
- 오버로딩은 새로운 메소드를 정의, 오버라이딩은 상속받은 부모 메서드를 새로이 정의 하는것이다.


--> 오버로딩 : 기존에 없는 새로운 메소드를 정의
--> 오버 라이딩 : 상속받은 메소드의 내용을 변경하는것
|
구분
|
오버라이딩
|
오버로딩
|
|
메소드명
|
동일
|
동일
|
|
매개변수, 타입
|
동일
|
다름
|
|
리턴 타입
|
동일
|
상관없음
|
'Java' 카테고리의 다른 글
| [JAVA]스캐너(Scanner) (0) | 2022.04.18 |
|---|---|
| [JAVA]배열(Array) (0) | 2022.04.18 |
| [JAVA]반복문(for) (0) | 2022.04.18 |
| [JAVA]조건문 (0) | 2022.04.18 |
| [JAVA]비트 연산자 (0) | 2022.04.18 |