클래스 상속
이미 개발된 클래스를 상속(재사용)시켜 새로운 클래스를 만들기에 중복되는 코드를 줄일 수 있다
- 여러 개의 부모를 한 번에 상속받을 수 없음
- 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드 상속 제외
- 부모와 자식 클래스의 패키지가 다를 경우 default 접근 제한을 갖는 필드와 메소드 상속 제외
super를 사용해 자식 생성자에서 부모 생성자 호출 예시
package sec01.exam02;
public class People {
public String name;
public String ssn;
public People(String name, String ssn) {
this.name = name;
this.ssn = ssn;
}
}
package sec01.exam02;
public class Student extends People{
public int studentNo;
public Student(String name, String ssn, int studentNo) {
super(name, ssn);
this.studentNo = studentNo;
}
}
자식 클래스에서 부모 클래스의 메소드를 수정하여 재정의(Overriding)할 수 있다
메소드 재정의 규칙
- 부모 메소드와 동일한 시그니처를 가져야 함
- 접근 제한을 더 강하게 재정의할 수 없음
- 새로운 예외를 throw할 수 없음
타입 변환과 다형성
사용 방법은 동일하지만 다양한 객체를 활용해 여러 실행 결과가 나오도록 하는 성질을 다형성(Polymorphism)이라 하며, 메소드 재정의와 타입 변환으로 구현할 수 있다
추상 클래스
추상 클래스는 클래스들의 공통적 특성(필드, 메소드)을 추출해 상속 관계를 가지도록 한다
abstract 키워드로 구현하며 필드/생성자/메소드를 선언해 super 키워드로 호출될 수 있다
추상 클래스 예시
package sec03.exam01;
public abstract class Phone {
//필드
public String owner;
//생성자
public Phone(String owner) {
this.owner = owner;
}
//메소드
public void turnOn() {
System.out.println("폰 전원을 켭니다.");
}
public void turnOff() {
System.out.println("폰 전원을 끕니다.");
}
}
'Languages > Java' 카테고리의 다른 글
[HUFS/객체지향프로그래밍] #8 중첩 클래스와 중첩 인터페이스 (0) | 2023.01.04 |
---|---|
[HUFS/객체지향프로그래밍] #7 인터페이스 (0) | 2023.01.03 |
[HUFS/객체지향프로그래밍] #5 클래스 (0) | 2022.12.30 |
[HUFS/객체지향프로그래밍] #4 참조 타입 (0) | 2022.12.27 |
[HUFS/객체지향프로그래밍] #3 연산자, 조건문과 반복문 (0) | 2022.12.26 |