对象与内存

Posted 永不宕机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象与内存相关的知识,希望对你有一定的参考价值。

当创建java对象时,程序总会先依次调用每个父类的非静态代码块、父类构造器(总是从Object开始)执行初始化,最后才调用本类的非静态代码块、构造器进行初始化。而父类构造器的调用则取决于子类的显示调用(使用super关键字调用父类构造器)或隐式调用(没有使用super或者this则默认调用父类的无参构造器)。

Person  p = new Son();(Person是son的父类,person即p的声明类型,son则为p的实际类型)

不管声明一个变量用的是什么类型,当通过这些变量调用方法时,方法的行为总是表现出他们实际类型的行为;但如果通过这些变量来访问他们所指对象的实例变量时,则这些实例变量的值总是表现出声明这些变量所用类型的行为。(如果子类重写了父类的方法,就意味着子类的方法彻底覆盖了父类的同名方法,而对于实例变量则不一样,即使在子类中定义了与父类完全同名的实例变量,这个实例变量仍然不可能覆盖父类中定义的实例变量,这就是继承成员变量和继承方法之间的差别)

当子类使用public访问修饰符修饰,而父类不使用public修饰时,才可以通过javap看到编译器将父类的public方法直接转移到子类中去(子类没有重写父类的该方法)

以上是关于对象与内存的主要内容,如果未能解决你的问题,请参考以下文章

方法与对象内存分析

疯狂JAVA16课之对象与内存控制

动态内存1(动态内存与智能指针)

动态内存——动态内存与智能指针

对象与内存

Java内存与垃圾回收篇(对象内存与垃圾回收机制)下篇