(java)对象引用向上转型后,无法调用子类独有的方法和属性问题
2017-11-11 21:03
585 查看
在下面的代码中,即可验证这一点,
程序一经编译,马上就会跳出
在子类创建对象时,首先会在内存中创建一个父类的对象,然后在父类对象外部放上子类独有的属性、方法,
两者结合起来形成一个子类对象。但是java的对象引用向上转型后,是不能调用子类独有的方法和属性的。
它只能调用子类重写的父类的方法,如果子类没有重写父类的方法,子类可以直接调用父类的公有方法。
程序示例:
class StaticTest1 { private static int c=2017; public void print(){ System.out.println(c+" is a different year!"); } } public class Statictest extends StaticTest1 { private static int c=2018; public void print(){ System.out.println(c+" will be a good year!"); } public void print1(){ System.out.println("2019"); } public static void main(String[] args) { StaticTest1 s=new Statictest(); s.print(); s.print1(); } }
程序一经编译,马上就会跳出
s.print1()找不到符号的错误。
在子类创建对象时,首先会在内存中创建一个父类的对象,然后在父类对象外部放上子类独有的属性、方法,
两者结合起来形成一个子类对象。但是java的对象引用向上转型后,是不能调用子类独有的方法和属性的。
它只能调用子类重写的父类的方法,如果子类没有重写父类的方法,子类可以直接调用父类的公有方法。
程序示例:
class StaticTest1 { private static int c=2017; public void print(){ System.out.println(c+" is a different year!"); } public void print1(){ System.out.println("2019"); } } public class Statictest extends StaticTest1 { private static int c=2018; public static void main(String[] args) { StaticTest1 s=new Statictest(); s.print(); s.print1(); } } /*Output: 2017 is a different year! 2019 */
相关文章推荐
- java程序练习:尝试创建一个父类,在父类中创建两个方法,在子类中覆盖第二个方法,为子类创建一个对象,将他向上转型到基类并调用这个方法。
- (多态)Java向上转型之后调用子类的同名变量/方法的问题
- java 向上转型之后调用子类的同名变量/方法的问题(多态)
- Error #1009: 无法访问空对象引用的属性或方法 --问过的个问题 解决了 记录下
- 【Java学习笔记】父类引用指向子类对象时方法的调用
- 尝试创建一个父类,在父类中创建两个方法,在子类中覆盖第二个方法,为子类创建一个对象,将它向上转型到基类并调用这个方法。
- java向上转型方法调用的问题
- 2018/01/08JAVA 基础 / 接口与继承/Java关键词:变量引用 super 调用父类对象方法/构造方法【或者访问父类对象属性】的方式归纳
- Flex4 主程序调用模块方法报TypeError: Error #1009:无法访问空对象引用的属性或方法
- JAVA基础 -从父类的引用如何调用子类中独有的方法
- as3中无法访问空对象引用的属性或方法的问题
- 字段初始值设定项无法引用非静态字段、方法或属性的问题
- TypeError: Error #1009: 无法访问空对象引用的属性或方法。
- Flash AS3中调试组件时出错------无法访问空对象引用的属性或方法。
- JNI学习之---用jni API 访问java对象的属性,方法,调用构造器。
- TypeError: Error #1009: 无法访问空对象引用的属性或方法
- java第七周实验封装一类对象English,该类对象具有一种功能printEnglish输出英文字母表。再封装一类对象Greek,该类必须是English的子类,该类对象不仅可以调用方法printE
- java中远程对象方法调用中的安全策略问题
- flexlib SuperTabNavigator 无法访问空对象引用的属性或方法
- Flash AS3 无法访问空对象引用的属性或方法