美文网首页
16、子类和父类的赋值引用关系

16、子类和父类的赋值引用关系

作者: 爱学习的代代 | 来源:发表于2021-03-29 08:25 被阅读0次

1、将子类的对象赋值给父类的引用✅。即:父类的引用可以指向子类的对象

2、将父类的对象直接赋值值给子类的引用 ❌,因为父类并没有子类的方法和属性。
不过如果可以确定了父类对象引用的类型,可以进行强制类型转换。

代码如下:

package day09;

public class TestPhoneV2 {
    public static void main(String[] args) {
        PhoneV2 v2 = new PhoneV2(200,"小米10",200,3999,3599,6,3.8,8.0,128.0,"小米","Android");
//
//        v2.buy(3);
//        v2.buy(100);
//        v2.describe();


//      将子类的对象赋值给父类的引用 ok
        MerchandiseWithConstructor m1 = v2;
        m1.describe();

//      将父类的对象直接赋值给子类的引用 ❌,不过如果确定父类引用的类型的话,可以直接直接进行强制类型转换。
        MerchandiseWithConstructor m2 = new MerchandiseWithConstructor();
//
        v2 = (PhoneV2) m1;
        v2.describe();


    }
}

3、当进行转换的时候,可以用instanceof 关键词看 对象A是否类B的一个实例,如果是返回true,如果是否的话,返回false

package day09;

public class TestPhoneV2 {
    public static void main(String[] args) {
        PhoneV2 v2 = new PhoneV2(200,"小米10",200,3999,3599,6,3.8,8.0,128.0,"小米","Android");
//
//        v2.buy(3);
//        v2.buy(100);
//        v2.describe();


//      将子类的对象赋值给父类的引用 ok
        MerchandiseWithConstructor m1 = v2;
        m1.describe();

//      将父类的对象直接赋值给子类的引用 ❌,不过如果确定父类引用的类型的话,可以直接直接进行强制类型转换。
        MerchandiseWithConstructor m2 = new MerchandiseWithConstructor();
//
        System.out.println("\n");

        if (m1 instanceof MerchandiseWithConstructor) {
            PhoneV2  v = (PhoneV2) m1;
            System.out.println("程序走到这里了....begin");
            v.describe();
            System.out.println("程序走到这里了....end");
        }

        System.out.println(m2 instanceof PhoneV2);
        
        System.out.println(null instanceof PhoneV2);

    }
}


执行结果:


image.png

相关文章

  • 第十天 - 知识点总结

    子类和父类之间是一种 is - a 的关系,子类 is a 父类是成立的,所以把子类的对象赋值给父类的引用是没有问...

  • 16、子类和父类的赋值引用关系

    1、将子类的对象赋值给父类的引用✅。即:父类的引用可以指向子类的对象 2、将父类的对象直接赋值值给子类的引用 ❌,...

  • Dart中的多态

    允许将子类类型的指针赋值给父类类型的指针,同一个函数调用会有不同的执行效果。 子类的实例赋值给父类引用 多态就是父...

  • C++派生类的赋值重载

    赋值兼容——子类对象的引用和指针可以赋值给父类对象的引用和指针 构造器(包括拷贝构造器)和析构器是不能被继承的 t...

  • java-多态中方法重载和方法重写

    1.当子类重载父类的方法,父类不能引用该方法。只能引用自己的方法。2.当子类重写父类的方法,父类引用指向子类对象时...

  • Java父类和子类的关系

    一、父类引用指向子类对象时 若子类覆盖了某方法,则父类引用调用子类重新定义的新方法 若子类未覆盖某方法,则父类引用...

  • 里氏转换

    里氏转换的特点 父类引用指向子类对象 如果父类引用指向的是子类对象,那么可以将这个父类强转为子类对象 将父类强转为...

  • 多态

    1.概念:父类的引用可以指向不同子类对象,从而导致父类引用的多种形态。 2.语法:父类类名 引用名=new 子类类...

  • java的多态

    什么是“父类引用指向子类的对象”:父类 Person 子类 StudentPerson ...

  • [Java 编程思想]第八章 多态

    多态: 多态实现的三大要素: 要有继承关系 子类要重写父类的方法 父类引用指向子类对。eg:class Peopl...

网友评论

      本文标题:16、子类和父类的赋值引用关系

      本文链接:https://www.haomeiwen.com/subject/gxyyhltx.html