首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Java子类与父类之间的对象转换(说明继承)

在使用Java的多态机制时,常常使用的一个特性便是子类和父类之间的对象转换。从子类向父类的转换称为向上转换(upcasting),通过向上转换,我们能够在编写程序时采用通用程序设计的思想,在需要使用子类对象的时候,通过把变量定义为父类型,我们可以通过一个变量,使用该父类型的所有子类型实例;从父类型向子类型的转换称为向下转换(downcasting),通过向下转换,我们能在必要的时候,将父类型变量转换成子类型变量,使用一些通过子类型才能够使用的方法。以下是我对于对象转换的一些个人理解,如有不对,欢迎指正,虚心向大神们请教。

02

java——面向对象

测试1和测试2编译时类型和运行时类型相同,所以没有多态发生,测试3编译时类型是BaseClass,而运行时类型是SubClass,所以当执行bs.base()时首先去SubClass类中查找此方法,发现没有base方法,则去父类中查找,发现存在该方法,则调用父类的base方法,接着执行bs.test(),由于之类重写了父类的test方法,所以此时执行的是之类的test方法,大家可能会有疑问,为什么bs.book的值不是java编程思想,而是6呢?照理说应该访问的是子类的book。与方法不同的是,对象的实例变量不具备多态性,所以这里输出的是父类的实例变量。bs.sub()编译时报错,因为BaseClass bs=new SubClass();这行代码编译的类型是BaseClass,而BaseClass中没有sub()方法,所以编译错误

02
领券