参见英文答案 > Java Inheritance – instance variables overriding                                    3个

我正在学习java.我对遗产有疑问.当子类扩展父类时,父类有一个方法引用父类中声明的实例变量.但是,子类dint会覆盖此方法,并声明了与父类同名的实例变量.在这种情况下,将引用来自child的实例变量或将引用parent.以下是代码段

class parent {

int a;

parent() {

System.out.println("in parent");

a = 10;

}

void method() {

System.out.println(a);

}

}

class child extends parent {

int a;

child() {

System.out.println("in child");

a = 11;

}

}

public class Test {

public static void main(String args[]) throws IOException {

parent p1 = new child();

p1.method();

}

}

我得到的输出是

在父母

在孩子

10

有人可以让我理解为什么它引用父类的实例变量a而不是子类的a.

另一个疑问是,我理解隐藏方法,当父类中有静态方法时,子类也声明了具有相同签名的静态方法.这里隐藏的意思?什么方法被隐藏了?如果它的父方法可以请你解释一下吗?

提前致谢.

解决方法:

>无法在子类中重写Java实例变量. Java继承不起作用.

>在您的示例中,没有隐藏(或覆盖或重载)方法的方法.

>虽然隐藏了实例变量.在类child中,a的声明隐藏了父级的声明,而子类中对a的所有引用都引用了child.a而不是parent.a.

为了更清楚地说明这一点,请尝试运行:

public static void main(String args[]) throws IOException {

child c1 = new child();

parent p1 = c1;

System.out.println("p1.a is " + p1.a);

System.out.println("c1.a is " + c1.a);

System.out.println("p1 == c1 is " + (p1 == c1));

}

它应该输出:

p1.a is 10

c1.a is 11

p1 == c1 is true

这表明有一个对象具有两个不同的字段,称为…,如果访问允许,您可以获取它们的两个值.

最后,您应该学会遵循标准的Java标识符约定.类名应始终以大写字母开头.

标签:java,oop

来源: https://codeday.me/bug/20190929/1830344.html

java实例变量可以被覆盖吗_Java继承覆盖实例变量相关推荐

  1. java 成员函数_Java继承中成员变量和成员函数的覆盖

    关于继承中变量和方法的覆盖: 1, 与基类中同名的变量,会被派生类所覆盖(同时存在但是有独立的值),直接取值将是派生类的值,但是基类的变量也是同时存在的.如果通过派生类函数访问,得到派生类的值.如果通 ...

  2. java 实例方法直接调用超类的实例方法_Java继承关系中,父类方法使用实例变量和调用实例方法的探究...

    面向对象编程中,某一个实例方法使用实例变量和调用其它实例方法的情况是常见的.当存在继承关系时,这种情况就变得复杂起来.以下就对继承关系中,父类的某实例方法使用实例变量和其它实例方法的情况进行探究.因为 ...

  3. java的继承实例_java继承(实例讲解一)

    Java继承(Java inheritance) Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类.这种技术使 ...

  4. java中super可以重新父类么_Java Super 覆盖方法

    子类从父类中继承方法,有时候,子类需要修改父类中定义的方法的实现,这称作方法覆盖. 比如,GeometricObject类中的toString方法返回表示集合对象的字符串,这个方法就可以被覆盖,返回表 ...

  5. java中线程死锁的解决方法_Java线程死锁实例及解决方法

    这篇文章主要介绍了Java线程死锁实例及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.死锁的定义 所谓死锁是指多个线程因竞争资源而造成 ...

  6. java 继承 私有变量_java – 继承和私有变量

    在HourlyEmployee和SalariedEmployee子类中,我们调用super()将"name"传递给基类构造函数.我有两个问题: >变量名称来自哪里,这是aNa ...

  7. java基础变量_Java基础语法之变量和常量

    上行没有"{"时,下行代码与上行首字母对齐 标识符 概述 在Java中对变量.常量.函数和语句块都是有名字的,他们的名字统称为Java标识符.是为类.对象.方法.变量.接口和自定义 ...

  8. java继承时父类常量覆盖吗_Java父类继承中的static和final用法

    1.父类中staitic修饰的静态方法,不能覆盖.不能继承. 2.父类中staitic修饰的变量或常量,能覆盖.不能继承. static修饰的变量和方法,只属于类本身,不属于对象:当声明一个对象时,并 ...

  9. java类初始化_Java的类/实例初始化过程

    昨天看到群里面有人分享了一道题目,我答错了,于是趁机了解了下Java的类/对象初始化过程: 程序的输出见文章最后 程序A主要考察的是 类实例初始化 .简单验证了下,类实例初始化过程如下:父类实例初始化 ...

最新文章

  1. linux 下byte,char,unsigned char的区别
  2. 为什么深度神经网络这么难训练?| 赠书
  3. 第二阶段小组冲刺第五天总结
  4. 使用树莓派(Raspberry Pi)远程GPIO
  5. win7启动后报丢失nscmk.dll解决解决方式
  6. vs如何设置对话框显示在最前面_“打开”对话框的使用
  7. Android文件操作
  8. linux 进程函数替换,Linux使用exec函数实现进程替换的代码分享
  9. Reactjs 踏坑指南1: 一些概念
  10. 关于 Backup Exec 中的介质
  11. java redis hscan_如何在Redis中使用HSCAN命令?
  12. 银行学生助学贷款管理系统免费PPT模板
  13. NorthWind 数据库整体关系
  14. 应用之星教你制作高下载量的App
  15. 润乾报表入门问题记录
  16. 艾美捷利妥昔单抗Rituximab参数及应用
  17. 各位对IE放尊重点没有他,你怎么下载其他浏览器,你们等黑丝和白丝她来了!
  18. 图片放上效果ImageHover.css
  19. onpageshow 用户浏览网页时触发
  20. 车位地磁检测器产品选型指导(干货!)

热门文章

  1. 你该认识这样的Linux_shell函数使用案例
  2. Kettle使用_14 文件操作复制移动删除结合JS
  3. Qt学习笔记之QMainWindow,QWidget,QDialog
  4. DS4700电池更换步骤
  5. Android中图片优化之webp使用
  6. SpringMVC+Hibernate +MySql+ EasyUI实现POI导出Excel(二)
  7. java中静态变量,静态代码块,静态方法,实例变量,匿名代码块的加载顺序
  8. 爬虫IP被禁的简单解决方法
  9. Image.Save()发生“GDI+ 中发生一般性错误”
  10. javaweb学习总结(十四)——JSP原理