열심히 끝까지
24강 상속과 다형성 - 상속 / 메서드 오버라이딩 본문
24-1 ) 상속과 오버라이딩
(1) 상속
상속이란?
: 부모클래스의 기능을 자식클래스가 물려받는 것
사용목적?
: 부모클래스에서 작성한 기능의 재사용하기 위해
상속 방법
[구조]
class 클래스명 extends 부모클래스명{
..........
}
<실습>
사람클래스를 생성하고,
사람의 기능을 상속받는 학생클래스와 선생클래스 생성하기
** 상속 시에 생성자는 상속되지 않는다.
상속 시 주의할 점
- 다중 상속은 지원되지 않는다.
: my클래스가 A클래스와 B클래스를 둘 다 상속받는 것이 불가능하다
: A와 B가 O클래스를 동시에 상속받고 있다라고 한다면...
: O에 x변수가 A와 B에 다 존재
: 이 상태에서 my가 상속받는다면 x라는 것이 2개가 생성 - 다중상속의 문제점
: 중복되는 필드가 있다면 여러 개가 된다
: JAVA에서는 지원하지 않는다(C++이나 다른 곳에서는 사용)
- 클래스 앞 final 키드는 다른 클래스가 상속 불가
: 부모클래스(슈퍼클래스) - 상속해주는
: 자식클래스(서브클래스) - 상속받는
< 예시실습 >
(2) 오버라이딩
오버라이딩?
: 자식클래스에서 부모클래스로부터 받아온 메서드를 재정의하는 것
사용목적?
: 자식에 맞는 기능으로 맞춰 동작하기 위해
---------------------------------------------
오버로딩 : 메서드 중복정의
- 함수의 시그니처
> 함수명
> 매개변수 개수
> 매개변수 타입
오버라이딩 : 메서드 재정의
- 상속관계에 있는 자식클래스가 부모클래스의 메서드를
다시 정의하는 것
<실습>
리더 클래스를 생성하고 이전에 생성했던 학생 클래스를
상속받아 say()메서드를 다음과 같이 재정의하기
-단, 리더클래스의 say()에서 부모(학생)클래스의 say() 호출하기
부모 클래스의 필드 사용 방법? : super
자식 클래스 내 필드 사용 방법? : this
(3) 상속과 생성자
super()
: 부모클래스의 생성자 호출
- 무조건 자식클래스의 생성자 첫 줄에서 이루어짐
- 작성하지 않을 시, 컴파일러가 자동 호출
<실습>
** 자식클래스에서 생성자 호출 시,
부모클래스의 디폴트 생성자가 자동으로 호출되기 때문에
부모의 디폴트 생성자가 존재해야 한다.
1. 부모 클래스에 디폴트 생성자를 생성
=> Car(){ }
2. 부모 클래스의 매개변수를 자식 클래스에서
호출할 것만 콕 집어 직접 호출해서 생성
=> super( x );
this.x = x;
---------------------------------------
Object 클래스?
모든 클래스의 조상클래스
<실습1>
<실습2>
ToString()
equals()
getClass()
'멘토씨리즈 JAVA' 카테고리의 다른 글
26강 추상클래스/인터페이스/내부클래스 - 추상 메서드와 추상클래스 (0) | 2022.04.30 |
---|---|
25강 상속과 다형성 - 다형성 개념과 다형성 관련 실습 (0) | 2022.04.30 |
23강 클래스에 대하여 - 생성자 (0) | 2022.04.29 |
22강 클래스에 대하여 - 객체타입배열 / 연습 계산기 클래스 (0) | 2022.04.29 |
21강 클래스에 대하여 - 인스턴스 변수와 클래스 변수 (0) | 2022.04.29 |