나는 Java의 상향식 캐스팅과 다운 캐스팅에 대해 설명하는 많은 기사와 질문이 stackoverflow에 있음을 알았다. 그리고 나는 기상 예보와 다운 캐스팅이 무엇인지 알았습니다. 하지만 제 질문은 그것에 구체적이지 않습니다.Java - Upcasting and Downcasting
업 캐스팅 - 하위에서 상위로 변환 - 컴파일러가 처리합니다. 아이에게 부모로부터 변환 - - 없음 캐스트
Downcasting을 할 필요가 없습니다 명시 적 캐스트가
public class Animal {
public void getAnimalName(){
System.out.println("Parent Animal");
}
}
public class Dog extends Animal{
public void getDogName(){
System.out.println("Dog");
}
}
public static void main(String[] args) {
Dog d = new Dog();
Animal a = d; // Upcasting
a.getAnimalName();
Animal vv = new Dog();
Dog cc = (Dog)vv;//DownCasting
cc.getAnimalName();
cc.getDogName();
필요합니다 당신이 각각 getAnimalName()
및 getDogName()
같은 자신의 방법을 가지고있는 Animal
및 Dog
클래스로 보면 . 따라서 Dog extends Animal
(is-a 관계)이므로 파생 클래스 (Subclass)에서 기본 클래스 (수퍼 클래스) 메서드를 사용할 수 있습니다.
이제 Main Method에서 아래 코드를 고려하십시오
그래서 여기에서 Dog
개체를 생성합니다. Animal
입니다. 그래서 내가 파생 클래스
public class Dog extends Animal{
@Override
public void getAnimalName(){
System.out.println("Parent Animal overridden here");
}
public void getDogName(){
System.out.println("Dog");
}
}<br>
으로 그리고 홈페이지 방법에 기본 클래스의 메소드를 오버라이드 (override)하고 싶은 만 Animal
속성 (메소드) 이제
Dog d = new Dog();
Animal a = d; // Upcasting
a.getAnimalName();<br>
O/P : Parent Animal<br><br>
의가 있다고 가정 해 봅시다에 액세스 할 수 있습니다 , 나는 Dog
개체 WRT Animal
을 만드는거야 비록
Dog d = new Dog();
Animal a = d; // Upcasting
a.getAnimalName();<br>
O/P : Parent Animal overridden here<br><br>
, B 여기에 dervied 클래스에서 재정의 된 기본 클래스 메소드가 인쇄됩니다.
O/P : Parent Animal overridden here<br>
왜 이렇게 행동하는지 궁금합니다. 이게 override
일까요?
귀중한 의견을 제공해주세요.
참조 변수가 아닌 참조 유형에 따라 인스턴스 메서드가 호출됩니다. 메서드를 재정의하지 않으면 클래스에옵니다. 하지만 기본 클래스에서 오버라이드하면 기본 클래스에서 가져온 것이 아닙니다. –
_ "하지만 여기에서는 기본 클래스 메서드"_ -를 인쇄합니다.이 클래스는 기본 클래스 메서드가 호출되고 있다고 생각되는 것처럼 읽습니다. 당신의 말씨에 더주의를 기울이고 당신이 의미하는 바를 명확히하십시오. –