多态

多态

关于对象和对象的引用的的理解:

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存在继承关系
posted @ 2022-10-02 15:13  北极有熊ovo  阅读(26)  评论(0)    收藏  举报