大家好,我有一个关于Java继承的具体问题。以下是我的代码
class Parent{
int x = 5;
public void method(){
System.out.println("Parent"+ x);
}
}
public class Child extends Parent{
int x = 4;
public void method(){
System.out.println("Child"+ x);
}
public static void main(String[] args){
Parent p = new Child();
System.out.println(((Child) p).x);
System.out.println(p.x);
}
}
现在我的问题是,运行这个程序时,幕后到底发生了什么。
请引导
这一切都是关于Java继承
和重写
<父类中的code>method()将被子类的方法覆盖。
System.out.println(((Child) p).x);// here you are invoking child
然后你会得到孩子的属性。
下一个是关于Java多态性。
((Child) p).x // invoking object type, x=4 (object is child )
p.x // invoking reference type, x=5 (reference is parent)
请参考此链接和此链接。
什么会遗传?
所有公共和受保护的方法都在子类中继承。田地永远不会被继承。
内存位置在哪里?
我在Java写了一篇关于对象创建过程的博客文章。我想从中你会更明白。
为什么第一个系统给4,第二个系统给5?
字段访问总是根据引用的声明类型而不是实际的对象类型来解决。因此,p. x
将访问Pental
字段,因为p
的声明类型是Pental
。然而,((子)p). x
将访问子
字段,因为您已经将引用p
转换为子
,现在考虑的声明类型是子
。
在Java中,没有变量重写,只有方法重写。
System.out.println(((Child) p).x);
这一行告诉点p
到子对象
,然后得到x
变量。
行,系统。出来println(p.x)
告诉父母的打印
x
JDK版本是热点8U_45 我研究了java进程的本地内存。本机内存甚至比堆占用更多的空间。然而,有许多本机内存块,这使我感到困惑。pmap-x的结果,例如: 有许多占地约64m的街区。 那么如何跟踪这些内存块的来源呢?
问题内容: 我正在尝试将非默认URL设置为安装Jenkins的木偶脚本的一部分。我知道如何通过Web UI编辑值,但似乎找不到实际存储值的位置。我已经浏览了jenkins_home文件夹和apache,但尚未找到它。 问题答案: 它将其存储在一个不太可能的位置:在Jenkins主文件夹中。
问题内容: Oracle数据库中存储的已加载Java类的Java字节码在哪里?具体来说,是否有一个视图或表可用于获取Oracle中Java类模式对象的原始字节? 问题答案: 如果使用CREATE JAVA SOURCE命令将Java Source加载到Oracle数据库中,则可以转到数据字典视图USER_SOURCE并找到您的Java Source。 如果需要显示它或其他内容,可以签出DBMS_J
我知道这是自动完成的——访问数据的频率越高,它存储的处理器就越近。但我能用Java语法影响它们的位置吗?按照我的理解,Volatile将数据放在三级缓存或RAM中,因为所有线程都可以看到它,对吗?
本文向大家介绍对象,方法和变量在Java的内存中存储在哪里?,包括了对象,方法和变量在Java的内存中存储在哪里?的使用技巧和注意事项,需要的朋友参考一下 有五个主要内存区域,用于各种Java元素。以下是相同的列表。 类区域-该区域包含类的静态成员。 方法区域-此区域包含方法定义和可执行代码。 堆区域-该区域包含动态分配/取消分配的对象。如果某个对象不再被任何实时引用引用,则将其释放。 堆栈区域-
我正在学习虚拟内存和自由空间管理。 我知道我们使用malloc分配的指针将请求堆中的一块内存。但是当我们调用malloc()系统调用时,它将返回一个整数作为专用内存块的地址,但是这个地址本身将存储在哪里呢? 假设 返回我的4008地址。它从4008到4022开始。这个块在堆中。但是4008本身在哪里? 它存储在堆栈中吗?