목차
- Q1_업 캐스팅이란?
- Q2_다운 캐스팅이란?
- Q1_업 캐스팅이란?
더보기
A. UpCasting : 다형성을 이용하여 자식 클래스의 객체를 부모 클래스 타입의 참조 변수를 참조 할 수 있게 하는 것.
- 상위(부모) 클래스 :
class Animal {
public void eat() {
System.out.println("Animal is eating");
}
} // end of calss
- 하위(자식) 클래스 :
class Dog extends Animal {
public void bark() {
System.out.println("Dog barks");
}
} // end of class
- Main 클래스 :
public class Main {
public static void main(String[] args) {
Dog dog = new Dog(); // 자식 클래스인 Dog의 객체 생성
// 업캐스팅: Dog(자식 클래스) 객체를 Animal(부모 클래스) 타입의 변수로 참조
Animal animal = dog;
animal.eat(); // Animal 클래스에 정의된 메서드 호출 가능
// animal.bark(); // Dog 클래스의 메서드이므로 Animal 타입으로 참조될 때 호출 불가능
} // end of min
} // end of class
- Q2_다운 캐스팅이란?
더보기
A. DownCasting : 부모 클래스의 참조를 자식 클래스의 참조로 변환하는 것.
- 업 캐스팅 된 경우 자식 클래스의 멤버 변수나 메서드에 접근할 수 없기 때문에 자식 클래스로 다운 캐스팅해서 사용해야 합니다.
상위(부모) 클래스 :
class Animal {
public void eat() {
System.out.println("Animal is eating");
}
} // end of calss
- 하위(자식) 클래스 :
class Dog extends Animal {
public void bark() {
System.out.println("Dog barks");
}
} // end of class
- 하위(자식) 클래스 :
class Dog extends Animal {
public void bark() {
System.out.println("Dog barks");
}
} // end of class
- Main 클래스 : " instnceof " 연산자를 사용하여 안전하게 " Dog " 타입으로 다운캐스팅할 수 있으며, 이렇게 변환된 " Dog " 변수를 통해 " Dog "클래스의 " bark " 메서드에 접근 할 수 있습니다.
public class Main {
public static void main(String[] args) {
Animal animal = new Dog(); // 업캐스팅
// 다운캐스팅 전에 instanceof를 사용하여 확인
if (animal instanceof Dog) {
Dog dog = (Dog) animal; // 다운캐스팅
dog.bark(); // 이제 자식 클래스의 메서드에 접근하여 bark 메서드를 호출 할 수 있음
}
} // end of min
} // end of class
'Java' 카테고리의 다른 글
[Java] 정규 표현식 (1) | 2024.03.23 |
---|---|
[Java] JVM, JRE, JDK란? (0) | 2024.03.15 |
[Java] 다형성과 클래스 상속 (1) | 2024.03.14 |
[Java] 메서드 오버라이딩과 메서드 오버로딩 (0) | 2024.03.14 |
[Java] 객체 지향 프로그래밍(OOP) 장, 단점 & SOLID 5가지의 원칙 (1) | 2024.03.14 |