问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java在创建继承的类的对象时 内存到底是什么样子

发布网友 发布时间:2022-05-23 06:28

我来回答

2个回答

热心网友 时间:2023-10-15 15:35

如果在创建类的时候没有声明要继承的类 那么java就默认 把它继承Object类
public class A{
/*Code*/
}

public class A extends java.lang.Object{
/*Code*/
}
以上两种的等价的public class Test // 从Object类继承
{
public static void main(String[] args)
{
System.out.println(new Test().toString());
}
}
从上面的代码可以看出,实际上,Test类的父类就是Object,因此,在Test中可以使用Object类的public或protected资源,如toString方法。那么Java编译器和JVM到底是如何做的呢?
了解这个原因其实并不需要知道JVM的实现细节。只要思考一下对于这种虚拟机程序的原理即可。一般对于这种靠虚拟机运行的语言(如Java、C#等)会有两种方法处理默认继承问题。
1、在编译源代码时,当遇到没有父类的类时,编译器会将其指定一个默认的父类(一般为Object),而虚拟机在处理到这个类时,由于这个类已经有一个默认的父类了,因此,VM仍然会按着常规的方法来处理每一个类。对于这种情况,从编译后的二进制角度来看,所有的类都会有一个父类。
2、编译器仍然按着实际代码进行编译,并不会做额外的处理。如果一个类没有显式地继承于其他的类,编译后的代码仍然没有父类。然后由虚拟机运行二进制代码时,当遇到没有父类的类时,就会自动将这个类看成是Object类的子类(一般这类语言的默认父类都是Object)。
从上面两种情况可以看出,第1种情况是在编译器上做的文章,也就是说,当没有父类时,由编译器在编译时自动为其指定一个父类。第2种情况是在虚拟机上做文章,也就是这个默认的父类是由虚拟机来添加的。那么Java是属性哪一种情况呢?其实这个答案很好得出。只需要随便找一个反编译工具,并.class文件进行反编译即可得知编译器是如何编译的。就以上面代码为例,如果是第1种情况,就算Test没有父类,但由于编译器已经为Test自动添加了一个Object父类,因此,在反编译后得到的源代码中的Test类是从Object类继承的。如果没是这种情况,那么就是第2种情况。

热心网友 时间:2023-10-15 15:35

还是一个对象 。。。。因为类定义会拷贝 ~
java的类在刚定义好还没有new的时候它在内存中存放在什么地方

这个时候JVM会把你那个类的class加载到内存当中.加载完了.JVM会看你的代码有没有错.没有错的话.JAVA的解释器就会去一行行的读你的代码.当然,这个时候读的代码是声明属性和构造函数等代码.这个时候他通过你的声明属性代码和构造函数就可以知道给你分配多少内存空间,并且也知道给他们初始值.这个是普通情况...

java 中子类继承父类的字段时,占用的是同一块内存还是父类和子类对象...

java语言中的对象采用的堆和栈的形式来存放,例如 Father f = new Father();f存放在栈中,其实只是一个堆内存的地址,真正地对象保存在此地址所指向的堆内存中。所以你的答案就显而易见了,Father f = new Father(); Child c = new Child();这里Father是父类,Child是子类,f和c是两个不...

Java创建一个类的对象对象,在方法里new和在类里new区别

区别在于 1。在方法里new在调用该方法时才会new出新对象,对内存来说是有好处的,er在类里就new的话,实例化类的时候, Face就会被创建,如果一直不用的话,占用内存空间。2.按照标准的bean的写法,一般在方法里进行类的属性的赋值。3.应该都不会报错的吧。

写java时 在什么样的情况下,需要使用到继承?

可以从面向对象的思想进行考虑。封装,继承,多态是面向对象的三大要素。1.就像你说的父类更通用子类更具体,解决代码重用,去除代码冗余。2.是为了多态服务。里氏替换原则:只要程序里的出现的父类类型都可以用这个父类的子类进行替换。这样就大大提高了程序的健壮性和灵活性。3.在协同开发的时候类库具体...

JOL:Java 对象内存布局

首先,Java对象在堆内存中被分为三个部分:对象头、实例数据和对齐填充。对象头包含了Mark Word和Class Pointer,而数组对象则会多出一个长度字段。Mark Word存储对象的运行时数据,包括哈希码、年龄、锁状态、线程持有锁、偏向线程ID和偏向时间戳等信息。其大小取决于虚拟机位数,32位和64位的虚拟机(...

java内存模型的java对象的内存分配

创建程序时,Java编译器必须准确地知道堆栈内保存的所有数据的“长度”以及“存在时间” 。这是由于它必须生成相应的代码,以便向上和向下移动指针。这一限制无疑影响了程序的灵活性,所以尽管有些Java 数据要保存在堆栈里— — 特别是对象句柄(也称对象的引用),但Java对象并不放到其中。(3) 堆(heap...

Java子类继承父类时也继承父类的静态函数吗

但对于静态成员,不管在编译时还是运行时,父类对象都不能调用子类特有的静态方法;而子类可以继承父类非private的static成员,子类也有自己特有静态方法,但这个名字和父类一样.也就是说其实子类同时有两个静态方法;但这两个方法不在同一区域内,所以不存在同名的冲突。只是子类的静态方法屏蔽了父类的静态...

java新建对象的问题

3、初始化代码块 给对象分配内存空间 调用初始化代码块(在每一次创建对象时都会调用一次,其内部的变量属于局部变量)实例变量初始化 调用构造方法完成对象的创建 调用本类初始化代码块在递归构造父类对象以后 4、静态初始化代码块和被static修饰的属性 在类加载时对象创建之前调用静态初始化代码块 静态...

Java中子类继承了父类的私有属性及方法吗?

但是分析了内存后,我发现我是错的,在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象。所以所谓的继承使子类拥有父类所有的属性和方法其实可以这样理解,子类对象确实拥有父类对象中所有的属性和方法,但是父类对象中的...

java类和对象的关系是什么?

类和对象的关系是:类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。类与对象的关系就如模具和铸件的关系类的实例化结果就是对象,而对一类对象的抽象就是类,类...

java获取对象在内存的大小 java创建对象内存分配 java获取内存中所有的对象 java面对对象编程继承 java对象内存分析 java对象内存分配 java对象内存大小 java对象内存布局 java对象内存模型
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
邯郸哪些酒店有浴缸 关于选择快递公司 问一下,不到1公斤的东西寄到1500公里外要多少钱。什么快递便宜点。 家电科普 电热水器安全使用那些事儿 教你如何安全使用家电? 水果有农药残留怎么办 荣耀之光手游下载如何下载 自考问答:心理障碍常见的判别标准有几种 王者荣耀荣耀之光头像框获得方法一览[图]-手游攻略-游戏鸟手游网_百度... ...七八次体检就是最近两个月做了两次 明天又要体检入职 做那个胸... 在java中 String a = "ab"; String b = "a" + "b"; System.out.println(a==b); 的内存图解是怎样的? java 中变量在内存中是什么结构 中通打印助手打印电子面单怎么用 中通公众号有个发件人下单后可以自助打印快递单的,要连接蓝牙打印机。问题来了打印机需要特定型号吗 做完茶叶蛋的酱油水还能下次用吗 荷航一飞机机长在厦门机场着陆时失能 是啥意思 厦门高崎机场纱网视角!看飞机迎面飞来降落~ 飞机在厦门机场降落为什么要转几圈 我专科学计算机的,本科学金融管理,是自考专升本的那种,我想问我能考湖南的农信社吗? 我是永州职业技术学院金融管理专业的专科生。我想参加专升本,对口的学校是湖南涉外经济学院,这个学校是 湖南金融管理与实务专升本考什么 荣耀magic3至臻版的视频只能录制20分钟吗? 和平精英荣耀magic3为什么录不了像 我左脚脚心张了个包,很痒【急急急,追加20分】 你欺骗谁用古文怎么说 脚上长水泡挑开疼穿些痒用什么药??? 脚上不停地长水泡是不是会引发灰指甲啊 古代谁怎么说的 最近左脚脚底起了这些东西,这是啥,用不用去医院 左脚脚心疼,不知道是不是因为脚趾头起水泡,走路时左脚在后,脚心就疼,走多几步就不疼了,一不走,一会 键盘轴的分类和区别是什么 二次型经可逆线性变换和正交线性变换化为标准型有什么区别? ·什么是正交变换? 线性代数 什么是正交变换 为什么经过正交变换的矩阵A B是相似的 如何证明抽样分布定理中所做的线性变换为正交线性变换 用正交线性变换法化二次型为标准型 迪丽热巴总是爱捂胸口,这是为什么? 用正交变换,将二次型f=x1^2+x2^2+x^3+4x1x2+4x1x3+4x2x3化为标准型 利用正交线性变换化二次整型f(x1,x2,x3)=3x1^2 2x2^2 2x3^2 2x2x3为 为什么我的ps cs5的信息是像素信息,我想要测量矩形选框内的尺寸都不知道是多少,怎样让信息显示的是厘米? 什么是线性变换 请讲得通俗一点好吗 二次型化标准型 正交线性变换,已经将正交矩阵Q求出,最后一步正交线性变换X=PY得到标准型,具体何求 线性变换的定义 美容院抗衰仪器超声聚能炮面部抗衰怎么样呢? 雪然的超声炮抗衰项目做几次才有效? 转述句是什么意思啊例:小红说我必须把教室打扫干净? 转述句、直述句是什么意思? 把曾经追过的女孩子照片拼成爱心有什么纪念意义 我的手机是华为荣耀畅玩4的,明明没有插耳机但有一个耳机的图标,听 青岛地区医保卡怎么计算,按每月3000元基数,每月望卡里打多少钱