[英]Why parent class type reference variable having reference to child class object can't access child class's Methods
[英]If parent and child class are having same methods and i am using the reference of parent class to store the object of child class
父类
class Animal {
public void sound() {
System.out.println("Grr");
}
}
儿童班
class Dog extends Animal {
public void sound() {
System.out.println("Woof");
}
}
调用类
class Callings {
public static void main(String args[]) {
Animal a = new Dog();
a.sound();
}
}
输出是 - “Woof”
我的担忧是-->我已经读到,如果我们使用父类引用并指向子类的对象,那么使用父类的引用我们只能访问父类的数据成员和方法,如果这样为真,则上述代码的输出应为“Grr”。 但是输出是“Woof”,任何人都可以解释原因。
即使您正在为Animal
创建和对象但实例类型为Dog
,您也可以创建子类的实例并分配给父类的类型。
当您调用一个方法时,它应该在父类中定义,如果它在子类中被覆盖,则将调用子方法,否则将调用父类的方法。
您可以通过使用System.out.println(a.getClass().getName());
打印实例a
的类类型来检查实例的类型System.out.println(a.getClass().getName());
这将打印Dog
Dog
知道它是Dog
,即使您称它为Animal
。
检查此问题以获取更多详细信息。
在java中,当你的子类有一个与父类同名的函数时,它会覆盖它。 在您的实例中,您有一个名为“声音”的父函数。
public void sound() {
System.out.println("Grr");
}
当您将子函数命名为“声音”时,您将覆盖父函数。
public void sound() {
System.out.println("Woof");
}
因此,每次覆盖父函数时,都会调用子函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.