목차
📢 상속
- 기존 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것
- (1) 부모 클래스 : 상속 대상이 되는 기존 클래스
- (2) 자식 클래스 : 기존 클래스를 상속하는 클래스이다.
- 부모 클래스의 필드와 메소드가 상속된다.(생성자와 초기화는 상속되지 않는다.)
- 다중 상속은 불가능하다.
- private이나 default 멤버는 자식 클래스에서 접근 불가하다!!
//class (자식) extends (부모)
class Cat extends Animal {
String desc;
//자식 클래스 함수 표현
Cat() {
super.desc = "고양이 입니다."; //super 이용
super("고양이 입니다."); //super() 이용
}
}
📢 Super, Super()
- super : 부모 클래스와 자식 클래스의 멤버 이름이 같을 때 구분하는 키워드이다.
- super() : 부모 클래스의 생성자를 호출하는 것이다.
class Animal {
String desc;
Animal() {
this.desc = "동물 클래스 입니다.";
}
}
class Cat extends Animal {
String desc;
Cat() {
super.desc = "고양이 입니다."; //super
super("고양이 입니다."); //super()
}
}
📢 오버라이딩
- 부모 클래스의 메소드를 자식 클래스에서 재정의
- 오버라이딩의 조건
- (1). 메소드의 선언부는 부모 클래스의 메소드와 동일해야함.
- (2). 반환 타입에 한해, 부모 클래스의 반환 타입으로 변환할 수 있는 타입으로 변경 가능
- (3). 부모 클래스의 메소드보다 접근제어자를 더 좁은 범위로 변경 불가
- (4). 부모 클래스의 메소드보다 더 큰 범위의 예외 선언은 불가하다.
class Student2 extends Person{
String name;
int istdent;
Student2(String name, int age, int istdent){
this.name = name;
this.age = age;
this.istdent = istdent;
}
public void printInfo() {
System.out.println("Student2.printInfo");
System.out.println("name: " + name);
System.out.println("age: " + age);
System.out.println("istdent = " + istdent);
}
}
public class Main {
public static void main(String[] args) {
//오버라이딩
System.out.println("=============");
Student2 s2 = new Student2("b",32, 1);
s2.printInfo();
}
}
반응형
'Java' 카테고리의 다른 글
[Java] 다형성 (0) | 2023.08.08 |
---|---|
[Java] 클래스와 객체(2) (0) | 2023.08.08 |
[Java] 클래스와 객체(1) (0) | 2023.08.08 |
댓글