子类继承父类的变量和父类原有变量的关系
来源:互联网 发布:网站建设优化推广 编辑:程序博客网 时间:2024/06/06 00:01
做项目的时候错认为在子类中修改从父类继续下来的变量值,会影响到其他继承该变量的子类,实际上不是的,每个继承了这个变量的子类,相当于拷贝了一份变量,对变量的修改影响也仅限于自身,不会影响到父类的变量值,更不会影响到其他子类对应的变量值。特意写的demo验证下:
//父类public abstract class AbstractParent { public int common = 1; public abstract void printCommon();}
//子类1public class Child1 extends AbstractParent{ @Override public void printCommon() { System.out.print("common:" + common); }}
//子类2public class Child2 extends AbstractParent{ @Override public void printCommon() { System.out.print("common:" + common); }}
//主类public class MyTest { public static void main(String[] args) { Child1 child1 = new Child1(); child1.common = 6; Child2 child2 = new Child2(); child2.printCommon(); }}
执行输出的结果为: common:1,由此可见类child1修改的是从父类common变量的拷贝,不会影响父类common的值
进一步做验证,在子类中声明一个和父类相同的变量并修改其值,修改后的demo为:
public class Child1 extends AbstractParent{ int common = 10; @Override public void printCommon() { System.out.print("common:" + common); } public void printParentCommon(){ System.out.print("parent common:" + super.common); } }
public class Child2 extends AbstractParent{ @Override public void printCommon() { System.out.print("common:" + common); } public void printParentCommon(){ System.out.print("parent common:" + super.common); }}
public class MyTest { public static void main(String[] args) { Child1 child1 = new Child1(); child1.common = 6; Child2 child2 = new Child2(); Child2 child3 = new Child2(); child3.common = 10; //打印child1 child1.printCommon(); System.out.print("\n"); child1.printParentCommon(); System.out.print("\n"); //打印child2 child2.printCommon(); System.out.print("\n"); child2.printParentCommon(); //打印child3 System.out.print("\n"); child3.printCommon(); System.out.print("\n"); child3.printParentCommon(); }}
输出结果:
common:6
parent common:1
common:1
parent common:1
common:10
parent common:10
由此可见,如果在子类中声明了和父类名称一样的变量,则子类中对自己声明的变量的修改,不影响父类中改变量的值,变量继承的父类和子类内存模型如下图:
0 0
- 子类继承父类的变量和父类原有变量的关系
- 子类继承父类的变量和父类原有变量的关系
- Java 继承 父类变量, 方法 与子类的关系:
- 父类成员变量与子类成员变量的关系
- 关于 子类局部变量 和 父类局部变量 的关系
- 继承 子类对父类成员变量的覆盖
- 父,子类的类变量
- Java父、子类成员变量和方法的调用关系
- Java 中子类是否只继承父类的非私有变量和方法?
- Java 中子类是否只继承父类的非私有变量和方法?
- Java:子类能够继承父类的私有变量和私有方法?
- Java:子类是否只继承父类的非私有变量和方法?
- php基础 继承_子类中如何调用父类的变量和方法
- Java基础之子类会不会继承父类的static变量和static方法
- 黑马程序员--03.面向对象--02.子类和父类成员变量的关系【个人总结】
- 子类继承父类静态变量问题
- 类型转换,类与类之间的转换,继承关系,继承与静态变量,子类父类重名,多继承,虚基类
- 26.继承3:类变量和继承之后的关系
- 注册美国公司
- opencv中的机器学习
- 外观模式 Facade
- zookeeper 分布式锁
- iOS性能优化:Instruments使用实战
- 子类继承父类的变量和父类原有变量的关系
- LeetCode104:Maximum Depth of Binary Tree
- 机器学习中文参考手册
- 总结的makefile,只求自己下次看的时候还能懂
- Leetcode 之 Subsets
- windows10 快捷键大全
- 哈夫曼树的实现
- Remove Duplicates from Sorted List II
- cocos2dx源码之 选择器