JAVA: 子类“覆盖”父类的成员变量
来源:互联网 发布:苏州岩倍美工是真是假 编辑:程序博客网 时间:2024/05/18 22:55
import org.junit.Test;class Father { int i = 10; public void setI(int i) { this.i = i; }}class Son extends Father { int i = 10; public void show() { System.out.println("super.i : " + super.i + ";this.i : " + this.i); }}public class Test3 { @Test public void test() throws Exception { Son son = new Son(); System.out.println(son.i); son.setI(100); son.show(); System.out.println(son.i); Father parent = son; System.out.println(parent.i); }}
对于以上代码,输出结果为:
10
super.i : 100;this.i : 10
10
100
首先需要说明的是,即使子类声明了与父类完全一样的成员变量,也不会覆盖掉父类的成员变量。而是在子类实例化时,会同时定义两个成员变量,子类也可以同时访问到这两个成员变量(this.i&super.i),但父类不能访问到子类的成员变量(父类不知道子类的存在)。
而具体在方法中使用成员变量时,究竟使用的是父类还是子类的成员变量,则由方法所在的类决定;即,方法在父类中定义和执行,则使用父类的成员变量,方法在子类中定义(包括覆盖父类方法)和执行,则使用子类的成员变量。
对于 setI 方法,它的原型应该是setI(Father this, int i)
而对于show方法,它的原型应该是show(Son this)
属性没有多态的概念,在Java中只有普通实例方法才可以实现多态。
阅读全文
0 0
- JAVA: 子类“覆盖”父类的成员变量
- 子类覆盖父类的成员变量
- 继承 子类对父类成员变量的覆盖
- Java父类子类成员变量初始化
- JAVA语法:子类成员覆盖父类成员时的现象
- 父类成员变量与子类成员变量的关系
- Java 理解 子类成员变量与父类成员变量同名 方法的重写
- 父类调用子类的成员变量
- Java父、子类成员变量和方法的调用关系
- Java子类父类属性的覆盖
- Java子类父类属性的覆盖
- Java子类覆盖父类的规则
- java子类成员变量与父类重名问题解释
- java中子类与父类的同名变量覆盖问题
- Java中关于子类成员变量与父类成员变量同名
- 子类父类的成员变量一起初始化的方法
- Java子类调用其父类和接口的成员变量
- Java编程中,子类可以用用这种方法给继承父类的成员变量赋值么?
- 每日一个linux命令(8):vim命令
- python笔记
- ios-OAuth授权和SSO授权
- Java多线程系列-线程池的优点和方法
- js中怎样获取<tags:treeselect/>中value的值,sys:treeselect取值
- JAVA: 子类“覆盖”父类的成员变量
- Linux top命令详解
- android gradle 4.1以上依赖的改变:compile->api和implementation
- 文章标题
- TabLayout使用
- git用到的小实例
- Torch+DeepSpeech2的语音识别注意事项
- AI决策算法 之 GOAP (二)
- RecyclerView上拉刷新下拉加载