1.다형성
하나의 객체가 여러 가지 타입을 가질 수 있는 것
부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조
2.자동 타입변환
상속관계에 있는 클래스 사이에서 가능하며
자식은 부모타입으로 자동 타입변환이 가능하다.
부모 타입은 자식의 객체를 참조할수있다.
package a10_Polymorphism;
public class a10 {
public static void main(String[] args){
Cat cat1= new Cat();
Animal animal1=cat1;
Animal animal2=new Cat();
System.out.println(cat1==animal1);
}
}
//출력
true
2-1.자동타입변환에서 오버라이딩
부모타입으로 변환된 이후의 자식객체는 부모의 메소드와 필드를 사용하지만 자식클래스에서 오버라이딩된 경우에는 자식클래스의 것을 사용한다.
아래에서는 method1 은 오버라이딩 되었기에 자식에서 사용하고
method2는 부모 클래스에서 정의되어있지않기에 사용할수없다.
package a10_Polymorphism;
public class Animal {
public void method1() {
}
}
class Cat extends Animal{
public void method1() {
}
public void method2() {
}
}
3.강제 타입 변환
자동 타입변환이 된 부모타입을 다시 자식타입으로 변환시키는것이다.
자식타입 변수 = (자식타입) 부모타입;
으로 강제로 자식타입으로 변환시킬수있다.
이경우 자식 클래스에서만 정의 되어있는 필드랑 메소드를 다시사용할수있다.
package a10_Polymorphism;
public class a10 {
public static void main(String[] args){
Animal animal2=new Cat();
Cat cat2= (Cat) animal2;
}
}
3-1.instanceof
강제 타입변환은 자식타입이 부모타입으로 변환되어있는 상태에서만 가능하기 때문에
instanceof를 사용하여 이를 확인 할수있다.
객체 instanceof 타입
객체가 타입의 인스턴스면 true를 아니면 false를 리턴한다.
package a10_Polymorphism;
public class a10 {
public static void main(String[] args){
Animal animal2=new Cat();
System.out.println(animal2 instanceof Cat);
}
}
//출력
true
'Language > JAVA' 카테고리의 다른 글
[Java] 추상클래스 (0) | 2024.05.16 |
---|---|
[Java] 상속 (0) | 2024.05.16 |
[JAVA] 패키지, 접근 제한자, getter,setter (0) | 2024.05.15 |