Java中的重写

来源:百度知道 编辑:UC知道 时间:2024/06/03 09:19:00
class A
{
public void overWrite()
{
System.out.print("A")
}

}
public class B extends A
{
public void overWrite()
{
System.out.print("B")
}
public static void main(String[] args)
{
A a=new B(); //这句话不大懂啊,为什么不是 B a=new B();?
a.overWrite();
}
}
可以讲一下内存中的变化么?

Class 动物

Class 狗狗 extend 动物

动物 动物1=new 狗狗(); //这一句可以理解为狗狗个是动物.
动物1.方法(); //调用动物的方法.狗狗重写了这个方法,所以或执行狗狗类中定义的方法,这个是多态.

这是java四大特点中继承的第三中情况,叫做父类的变量指向子类的事例,这两中写法没有什么区别,因为你B继承自A,所以B类型的事例肯定也是A类型的,所以这么写是可以的,不会有错误. A a=new B(); 在编译时A类型的,但当真正运行时就是B类型了,所以到后来的a.overWrite();调用的还是B中的方法

因为B继承A,也就是A的子类,可以调用A的状态和方法