[JAVA] 38. 추상화 & 다형성 (상속에서 변수 찾기)

편준민's avatar
Feb 17, 2025
[JAVA] 38. 추상화 & 다형성 (상속에서 변수 찾기)
notion image
package ex05.ch02; class Animal { int i = 1; String name = "동물"; } class Cat extends Animal { String name = "고양이"; int age = 15; } class Dog extends Animal { String name = "강아지"; } public class ExVar01 { public static void main(String[] args) { Animal a1 = new Animal(); // [animal] System.out.println(a1.i + ", " + a1.name); Dog a2 = new Dog(); // [animal, dog] System.out.println(a2.i + ", " + a2.name); // 부모의 것을 물려 받음(부수적인 효과) Animal a3 = new Dog(); // [animal] System.out.println(a3.i + ", " + a3.name); Cat a4 = new Cat(); // [animal, cat] System.out.println(a4.i + ", " + a4.name + ", " + a4.age); Animal a5 = new Cat(); // [animal] System.out.println(a5.i + ", " + a5.name + ", " + a5.age); // 오류 // Cat(자식)은 Animal(부모)에게 i를 물려 받지만 // Animal이 부모이기 때문에 Cat(자식)에게 물려 받지 못함 } }
a1 은 animal 이라는 공간에 저장된 것만 꺼낼 수 있기 때문에 int i = 1 과 name = “동물”을 꺼낼 수 있다. 하지만 Animal 안에 상속되어 잇는 똑같이 본인의 Cat 공간에 있는 name = “고양이” 아 age = 15 를 꺼낼 수 있지만, Animal에게 상속 되어 있기 때문에 부모클래스에게로 부터 Cat 안에는 없는 int i = 1 이라는 변수도 쓸 수 있다.

요약

부모클래스(Animal)에게로 상속 받은 자식클래스(Cat, Dog)는 부모의 변수를 물려받아 사용 할 수 있다.

문제점

추상적인것에 의존 중이여서 구체적인것에 변수를 찾을 수 없음
 
Share article

YunSeolAn