JAVA:上转型变量不是说是子类转换成父类了吗?可实现的怎么还是子类的方法啊?

来源:百度知道 编辑:UC知道 时间:2024/06/30 19:15:41
class 动物
{
void cry()
{
}
}
class 狗 extends 动物
{
void cry()
{System.out.printlb("旺旺......");
}
}
class 猫 extends 动物
{
void cry()
{System.out.println("喵喵......");
}
}
class Example4_20
{
public static void main(String args[])
{
动物 dongwu;
dongwu=new 狗();
dongwu.cry();
dongwu=new 猫();
dongwu.cry();
}
}class 动物
{
void cry()
{
}
}
class 狗 extends 动物
{
void cry()
{System.out.printlb("旺旺......");
}
}
class 猫 extends 动物
{
void cry()
{System.out.println("喵喵......");
}
}
class Example4_20
{
public static void main(String args[])
{
动物 dongwu;
dongwu=new 狗();
dongwu.cry();
dongwu=new 猫();
dongwu.cry();
}
}

最后实现的旺旺和喵

这是重写的父类方法,用父类的引用子类的对象可以访问

动物有 cry 方法。因为猫和狗都是动物,那么自然猫和狗也都有 cry 方法.
主方法中第一个cry调用的狗的cry,第二个是猫的cry.

父类的方法被重写了..
就相当于父亲会哭,儿子也会哭,但他哭的方式和父亲不同,如果不重写的话就跟父亲一样了..
呵呵

编译期是父类型,运行时是子类型,记住这句话,这是动态绑定,从而实现多态