반응형
# 상속관계에서 객체생성 방법
## 상속관계에서 객체 생성 방법
- 객체 생성 : new 연산자와 생성자 메서드 활용하여 객체 생성.
- 상속관계(부모-자식)에서 객체 생성 : 나(하위 클래스)를 기준으로 나라는 존재가 만들어지기 전에, 부모(상위 클래스)가 먼저 만들어져야 한다.
- 간접 이용 : 상위(부모)클래스를 이용하는 방식 (하위 클래스의 동작 방식을 모를 때, class 파일(=실행파일)만 있고 java 파일(=소스파일)은 없을 때 사용). 이때 하위 클래스를 접근할 수 없음, 재정의(오버라이드)를 이용하면 가능 함.
Animal dog = new Dog();
dog.eat();
Animal cat = new Dog();
cat.eat();
cat.night();
- 직접 이용 : 상위(부모)클래스를 이용하지 않는 방식.
Dog dog = new Dog();
dog.eat();
Cat cat = new Cat();
cat.eat();
cat.night();
##상속관계에서 객체 생성 방법 (실습)
- 모든 클래스는 상속을 받지 않으면 기본적으로 루트 클래스인 Object 클래스(최상위 클래스)를 상속받음.
- 다형성 : 상위(부모) 클래스가 하위(자식) 클래스에게 동일한 메시지를 보내면 하위 클래스가 서로 다르게 동작하는 것. (상속 관계에서 업캐스팅 시 적용)
public class Animal extends Object {
public void eat() {
System.out.println("?"); // 포괄적, 추상적.
}
public Animal() {
super(); // new Object();
}
}
public class Dog extends Animal {
// 이름, 나이, 종 등 : 상태정보 존재.
// 재정의(override)
public void eat() {
System.out.println("멍멍이 처럼 먹는다.");
}
public Dog() {
super(); // new Animal();
}
}
public class Cat extends Animal {
// 이름, 나이, 종 등 : 상태정보 존재.
@Override
public void eat() {
System.out.println("고양이 처럼 먹는다.");
}
public void night() {
System.out.println("고양이는 밤에 눈에서 빛이 난다.");
}
public Cat() {
super(); // new Animal();
}
}
public class TPC22 {
public static void main(String[] args) {
// 재정의(오버라이드) 유무에 따라 하위(자식)클래스의 메서드 구동 가능 여부가 결정됨.
// 1. 직접 이용
Dog dog = new Dog();
dog.eat();
Cat cat = new Cat();
cat.eat();
cat.night();
// 2. 간접 이용 : 상속관계가 선행되어야 사용 가능.
Animal d = new Dog(); // UpCasting (자동 형 변환)
d.eat();
Animal c = new Cat();
c.eat();
((Cat)c).night(); // DownCasting (강제 형 변환)
}
}
반응형
'인프런 강의 학습 > Java TPC' 카테고리의 다른 글
Java TPC_15일차 다형성 활용 (다형성인수, 다형성배열) (0) | 2022.01.21 |
---|---|
Java TPC_14일차 객체 형 변환 (0) | 2022.01.19 |
Java TPC_12일차 수평적 구조와 수직적 구조 / 상속 / 오버라이드 (0) | 2022.01.17 |
Java TPC_11일차 class (0) | 2022.01.13 |
Java TPC_10일차 메서드 오버로딩 / 동일한 구조와 이질적인 구조 (0) | 2022.01.12 |