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
网友评论