상위 클래스를 여러가지 클래스로 상속할 수 있다,
다형성이란 상위클래스로 인스턴스를 만들고 하위클래스로 객체를 만들 수 있다.
.
.
상위클래스인 Animal 클래스를 만든다.
package Animal;
public class Animal {
public Animal() {}
public void makeNoise() {
System.out.println("Bark");
}
}
.
.
Animal 클래스를 상속받을 하위 클래스 3개를 만든다.
package Animal;
public class Dog extends Animal{
public Dog() {}
public void makeNoise() {
System.out.println("멍멍");
}
}
package Animal;
public class Cat extends Animal {
public Cat() {}
public void makeNoise() {
System.out.println("야옹");
}
}
package Animal;
public class BigDog extends Animal{
public BigDog() {}
public void makeNoise() {
System.out.println("왕왕");
}
}
.
.
.
그러면 이제 테스트를 해보자.
.
.
package Animal;
public class TestAnimal {
public static void main(String[] args) {
Cat cat1 = new Cat();
cat1.makeNoise();
Dog dog1 = new Dog();
dog1.makeNoise();
BigDog bigDog = new BigDog();
bigDog.makeNoise();
// Upcast
Animal animal1 = new Cat();
animal1.makeNoise();
Animal animal2 = new Dog();
animal2.makeNoise();
Animal animal3 = new BigDog();
animal3.makeNoise();
Animal animal4 = new Animal();
animal4.makeNoise();
// Downcast
Cat cat2 = (Cat)animal1;
Dog dog2 = (Dog)animal2;
Dog dog3 = (Dog)animal2;
BigDog bigDog2 = (BigDog)animal3;
cat2.makeNoise();
dog2.makeNoise();
dog3.makeNoise();
bigDog2.makeNoise();
}
}
.
.
.
.
<Upcast>
상위클래스에 하위클래스 객체를 사용함으로써 하위클래스 메소드를 사용할 수 있다.
하위 클래스에서는 상위클래스 메소드를 오버라이딩해서 사용 가능하다.
이렇게 선언하면 하위클래스에서 오버라이딩한 메소드가 실행된다.
<Downcast>
하위클래스로 선언한 것을 상위클래스 객체로 생성할 수 없다.
하지만 상위클래스 인스턴스가 하위클래스 객체로 선언된다면 상위클래스를 하위클래스로 형변환 할 수 있다.
.
.
(선언 방법 짚고 가자)
상위클래스 인스턴스 = new 하위클래스객체;
.
.
ex) Animal animal1 = new Cat();
Cat cat2 = (Cat)animal1;
728x90
반응형
'Java > 본격 Java 퀴즈 기초' 카테고리의 다른 글
[Java] 학생과 직장인 정보 표시하기(abstract 클래스 구현) (0) | 2020.07.10 |
---|---|
[Java] 원의 중심과 원의 관계(상속과 클래스 배열 이용) (0) | 2020.07.10 |
[Java] 학생과 선생의 정보(상속, 중복값 확인) (0) | 2020.07.09 |
[Java] 원과 원기둥 둘레와 넓기 구하기(상속 이용) (0) | 2020.07.09 |
[Java] 책 정보 출력하기 (클래스 배열 이용) (0) | 2020.07.09 |