多态
关于对象和对象的引用的的理解:
Demo demo=new Demo();
这一条语句,其实包括了四个动作:
1)右边的“new Demo”,是以Demo类为模板,在堆空间里创建一个Demo对象。
2)末尾的()意味着,在对象创建后,立即调用Demo类的构造函数,对刚生成的对象进行初始化。
3)左边的“Demo demo”创建了一个Demo类引用变量,它存放在栈空间中。也就是用来指向Demo对象的对象引用。
4)“=”操作符使对象引用指向刚创建的那个Demo对象。
关于重写和多态的理解
public class Rewrite {
public static void main(String[] args) {
//非静态方法:子类重写类父类方法,方法的调用和右边类型有关
A a = new A();
a.test();
B b = new A();/*父类的引用指向子类的对象,对象的类型是A,对象的引用是B,对象能用的方法取决于引用,若有重写,执行时走的方法时子类重写后的方法*/
// b.test();
// B b2 = new B();
//静态方法:方法的调用只和左边的类型有关
A a1 = new A();
a.test1();
B b1 = new A();
b.test1();
}
}
instanceof
b = a instanceof A //返回值类型为bool,判断引用a是否与A存在继承关系
标签:对象,Demo,多态,引用,new,重写
From: https://www.cnblogs.com/qt0312/p/16748823.html