内存控制之父子实例
来源:互联网 发布:linux安装cuda8.0 编辑:程序博客网 时间:2024/05/17 08:00
父子实例的内存控制
1.1 继承成员变量和继承方法的区别
package qianglih;public class FieldAndMethodTest {public static void main(String[] args) {//声明并创建一个Base对象Base b =new Base();//1//直接访问count实例变量和通过display访问count实例变量System.out.println(b.count);b.display();//声明并创建一个Derived对象Derived d=new Derived();//2//直接访问count实例变量和通过display访问count实例变量System.out.println(d.count);d.display();//声明一个Base变量,并将Derived对象赋值给该变量Base bd=new Derived();//3System.out.println(bd.count);bd.display();//让d2b变量指向原d变量所指向的Derived对象Base d2b =d;//4System.out.println(d2b.count);d2b.display();System.out.println(d2b ==d);}}class Base{int count = 2;public void display(){System.out.println(this.count);}}class Derived extends Base{int count = 20;public void display(){System.out.println(this.count);}}
结果:
222020220220true
d2b ==d返回true,两个指向同一个对象的变量,分别访问他们的实例变量时却输出不同的值,这表明d2b、d变量所指向的java对象中包含了两块内存,分别存放值为2的count实例和值为20的count的实例变量。
当通过这些变量调用方法时,方法的行为总是表现出他们实际类型的行为;但通过这些变量来访问他们所指对象的实例变量时,表现出声明这些变量所有类型的行为.
由此可见,java继承在处理成员变量和方法时是有区别的。
注:当Derived继承Base时,编译器会直接将Base里的display()方法移到Derived里去,但如果它已重写了该方法就不能移动了。编译器在处理方法和成员变量存在区别,不会将父类的实例变量移到子类里去,这使得父类与子类可以同时拥有同名的实例变量。
1.2 内存中子类实例
0 0
- 内存控制之父子实例
- 父子实例的内存控制
- Java父子继承实例的内存控制
- java 父子实例的内存控制 继承变量和继承方法的区别
- 五、JAVA中类的探究-父子实例的内存控制
- 父子实例的内存控制--继承成员变量和继承方法的区别
- 进程通信实例之父子进程通信
- Java之父、子实例的内存控制
- 对象与内存控制之实例变量与类变量
- Java——父子实例的内存情况解析
- Java基础复习笔记 数组,内存形式,父子,内存控制01
- 共享内存及信号量控制实例
- 父子类实例化过程
- Instantiate 实例产生父子关系
- FIFO父子进程通信实例
- Spring 父子容器使用实例
- css之父子选择器
- fork 之 父子进程
- 建议93:构造方法应初始化主要属性和字段
- 修改Oracle最大连接数
- ElasticSearch API 之 DELETE
- JNDI深层解答
- js学习总结2
- 内存控制之父子实例
- 华为 5
- uva1363 Joseph's Problem
- 建议94:区别对待override和new
- tensorflow的Virtualenv安装方式安装
- java web中过滤器、拦截器和监听器的区别
- windows环境下MySQL 5.7及以上解压缩版本配置安装
- Android WiFi开发教程(二)——WiFi的搜索和连接
- 关于RTL8192CU