`

Java 父子类在内存中的分配情况

 
阅读更多

 

// super的用法 父子类在的内存中的分配
class Fruit {
	String color = "未确定颜色";

	public Fruit getThis() {
		return this;
	}

	public void info() {
		System.out.println("fruit 方法");
	}
}

class Apple extends Fruit {

	@Override
	public void info() {
		System.out.println("apple 方法");
	}

	public void accessSuperInfo() {
		super.info();
	}

	public Fruit getSuper() {
		return super.getThis();
	}

	String color = "红色";
}

public class SubClass03 {

	public static void main(final String[] args) {
		final Apple ap = new Apple();
		final Fruit f = ap.getSuper();
		System.out.println("ap和f所引用的变量是否相等 :" + (ap == f));
		System.out.println("访问ap所引用对象的color实例变量:" + ap.color);
		System.out.println("访问f所引用对象的color实例变量:" + f.color);
		ap.info();
		f.info();
		ap.accessSuperInfo();
	}

}

 

 

 

 

分享到:
评论

相关推荐

    Java基础复习笔记01数组_内存形式_父子_内存控制

    - **内存分配**: 数组在内存中的表示方式是一段连续的物理空间。例如,声明一个整型数组`int[] arr = new int[5];`,JVM会在堆内存中分配一段连续的空间来存放这五个整型元素。 - **引用类型数组**: 对于引用类型的...

    父子实例的内存控制.rar_父子实例的内存控制

    在Java编程语言中,"父子实例的内存控制"是一个重要的概念,主要涉及到继承关系下的对象引用和内存管理。当我们创建一个子类对象时,它同时继承了父类的所有非私有属性和方法。这里,我们将深入探讨如何通过父类类型...

    Java中类的生命周期.doc

    加载阶段的目标是将编译后的`.class`文件装载到内存中的方法区,并在堆区创建一个`java.lang.Class`对象来表示该类。加载过程主要包括以下三个步骤: 1. **读取类文件**: 将类的`.class`文件中的二进制数据读入内存...

    深入探讨 Java 类加载器

    这在某些情况下非常有用,例如在Web应用服务器中加载特定Web应用的类。 在Web容器(如Tomcat)中,每个Web应用都有自己的类加载器,这样可以确保不同应用的类之间隔离,避免冲突。而在OSGi环境下,类加载器被用来...

    Java虚拟机工作原理详解

    类加载器是 Java 虚拟机中的一种机制,负责将类文件从文件系统加载到 JVM 的内存区域中。类加载器被组织成一种层级结构关系,也就是父子关系,其中 Bootstrap 是所有类加载器的父亲。 * Bootstrap class loader:...

    java打牌游戏(带线程控制)

    在Java中,可以通过继承`Thread`类或实现`Runnable`接口来创建线程。在这个打牌游戏中,可能有多个线程,如主游戏线程、用户输入线程和随机抽牌线程等。\n\n线程控制在游戏中主要体现在以下几个方面:\n\n1. **并发...

    java-notes(JAVA笔记资料)[定义].pdf

    数组在Java中被视为对象,声明数组时仅创建引用,需额外初始化并分配元素。 方法的重载(overload)和覆盖(override)是Java中的重要概念。重载发生在同一类或父子类中,要求方法名相同但参数列表不同。覆盖则仅在...

    java经典面试题

    - 对象的内存分配、初始化和构造。 4. **GC 的两种判定方法**: - 引用计数:每个对象都有一个引用计数器。 - 引用链:通过可达性分析判断对象是否可回收。 5. **GC 的三种收集方法**: - 标记清除:标记不再...

    黑马Java基础口述总结

    - 重写发生在父子类之间,方法名、参数列表和返回类型完全相同。 - 重载发生在同一个类中,方法名相同但参数列表不同。 - **重载能否改变返回值类型**:不可以。 #### 21. static关键字 - **定义**:用于声明静态...

    Java基础知识练习题

    Strings=newString("xyz") 的内存分配 - **问题解析**:创建字符串 `"xyz"` 时,Java 会首先检查常量池中是否存在相同的字符串,若存在则直接引用,否则会在常量池中创建一个新的字符串。 - **代码示例**: ```...

    性能调优专题-jvm类加载机制-performance-jvmclassloader.zip

    在Java开发中,JVM(Java虚拟机)的类加载机制是至关重要的,因为它负责将类的字节码转换为运行时的实例。本专题"性能调优专题-jvm类加载机制-performance-jvmclassloader"深入探讨了如何通过理解并优化类加载过程来...

    java大数据作业_5Mapreduce、数据挖掘

    HBase的序列化类主要是`org.apache.hadoop.hbase.io.HbaseObjectWritable`,用于在MapReduce任务中传输HBase对象。 4. **容量调度的配置方法**: 容量调度器(Capacity Scheduler)是Hadoop YARN的一种调度器,它...

    唯品会java方向实习笔试题

    在段页式系统中,为了获取一条指令或数据,通常需要三次内存访问: - **第一次访问**:访问内存中的段表,从中获取页表的起始地址。 - **第二次访问**:根据得到的页表地址访问内存中的页表,从而找出该页所在...

    深入类别载入器快速下载

    例如,通过替换类加载器,可以在不重启应用的情况下更新和替换运行中的类,提高开发效率。 总结,深入理解Java的类别载入器不仅可以帮助我们更好地理解JVM的工作机制,还能在处理类冲突、优化性能、实现热部署等...

    2024年java面试题-Linux面试题第二部分

    在Linux内核环境中,申请大块内存是一项挑战性的任务,尤其是随着系统运行时间的增长,内存碎片化可能导致大块内存申请成功率降低。为了解决这一问题,通常采用以下方法: 1. **启动内存(Boot Memory)**: - 在...

    java数据结构与算法

    - Java中的字符串是不可变的对象,使用`String`类表示。 - 常用方法:length()、charAt()、substring()、concat()等。 - **数组** - 数组是一种基本的数据结构,用于存储同类型元素的集合。 - 创建数组的方式:...

Global site tag (gtag.js) - Google Analytics