JAVA多态中的隐藏和覆盖

发布网友 发布时间:2022-04-22 11:28

我来回答

1个回答

热心网友 时间:2023-07-15 18:09

Java的引用变量有两个类型,一个是编译时类型,一个是运行时类型
编译时类型:由声明该变量时使用的类型决定
运行时类型:由该变量指向的对象类型决定
如果编译时类型和运行时类型不一致,会出现所谓的多态。因为子类其实是一种特殊的父类,因此java允许把一个子类对象直接赋值给一个父类引用变量,无须任何类型转换,或者被称为向上转型,由系统自动完成。
如 Father f = new Son(); Son是Father的子类
引用变量f就会出现编译时类型和运行时类型不一致的情况 编译时是Father类型的 运行时是Son类型的
当变量的编译时类型和运行时类型不一致时,通过变量访问它所引用的对象的实例时,该实例变量的值由声明该变量的类型决定。
通过变量访问它所引用的对象的方法时,该方法的行为由所引用的对象实际类型所决定。追问好棒啊!谢谢回答 如您所说的 当编译时类型和运行时类型不一致时候 使用声明时类型 那子类如果声明时是父类类型 那要运营该对象的方法 应该就是运行父类的方法呀 为啥运行的是被子类覆盖的方法呢? 覆盖在内存中是咋样的过程呢 谢谢啦

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com