person类与其子类在使用中的内存情况_Java

普通person类及调用代码:

public class Person
{
	public String xm;
	public int nl;
	public void setme(String x,int y)
	{
		xm=x;
		nl=y;
	}
	public void showme()
	{
		System.out.println("我是"+xm+",今年"+nl+"岁");
	}
}
public static void main(String[] args)
	{
		// TODO Auto-generated method stub
		Person a,b;
		a=new Person();
		b=new Person();
		a.setme("张三",20);
		b.setme("李四",18);
		a.showme();
		b.showme();
	}

  对应内存示意图(不严谨,仅为说明问题,下同)

person类的子类person1及调用代码:

public class Person1 extends Person
{
	public void showme()
	{
		System.out.println("我是中国人"+xm+",今年"+nl+"岁");
	}
}

public static void main(String[] args)
	{
		// TODO Auto-generated method stub
		Person1 a;
		Person b,c;
		a=new Person1();
		b=new Person();
		a.setme("张三",20);
		b.setme("李四",18);
		c=a;
		a.showme();
		b.showme();
		c.showme();
	}

  对应内存示意图:

运行结果:

原文地址:https://www.cnblogs.com/wanjinliu/p/11001244.html

时间: 2024-10-25 14:37:32

person类与其子类在使用中的内存情况_Java的相关文章

基类转换为子类的 目前知道的情况 (一种)

package cn.com.hanbinit.test; /** * 检验父类是否可以强转为子类 * @author icer * */ public class ConvertPro extends Father { public static void main(String[] args) { Father father = new Father(); Father father1 = new ConvertPro(); ConvertPro son = new ConvertPro()

关于C#基类和子类函数调用问题

c#基类子类的函数调用关系,代码说明newkeyword后面的类中的函数为对象调用的函数,当然必需要有virtual和override,继承就相当于包括了基类的函数,子类对象调用时基类的函数相当于就在子类其中一样.(必需要有virtual和override此代码才成立),问题是C#基础问题但非常easy搞错,代码片在unity3d中測试,需要UnityEngine.dll. using UnityEngine; using System.Collections; public class New

Java基础-继承-编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数 loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个 类都有构造方法和输出相关数据的方法。最后,写一个测试类来测试这些类的功 能。

#29.编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数 loader.卡车类Truck是Car类的子类,其中包含的属性有载重量payload.每个 类都有构造方法和输出相关数据的方法.最后,写一个测试类来测试这些类的功 能. package hanqi; public class Vehicle { private int wheels; private int weight

Format类及其子类功能和使用方法具体解释

1.   Format类结构: ·        java.lang.Object ·        java.text.Format ·        All Implemented Interfaces: Serializable, Cloneable Direct Known Subclasses: DateFormat, MessageFormat, NumberFormat public abstract class Format extends Object implements S

类的继承和多态性-编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 getLegs(),设置动物名称的方法 setKind(),获得动物名称的方法 getKind(),获得动物数量的方法 getCount()。定义Fish类,是Animal类的子类,

编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 getLegs(),设置动物名称的方法 setKind(),获得动物名称的方法 getKind(),获得动物数量的方法 getCount().定义Fish类,是Animal类的子类,统计鱼的数量 count,获得鱼数量的方法 getCount().定义Tiger类,是Animal类的子类,统计老虎的

基类与子类之间的引用转换

(一) 从该源代码中可看出,子类可直接赋给基类(“基类变量=子类对象”):基类的引用类型要传递给子类必须通过强制转换(“子类变量=(子类名)基类对象”): 子类之间不可以进行转换. (二) 该源代码可总结出: 当基类与子类有同名的变量时,以引用变量为准,引用变量是谁,就调用哪个类的变量:当基类与子类有同名的方法时,以具体对象类型为准,对象是什么类型,就调用哪个类的方法:基类与子类之间的转换:基类变量可以直接引用子类对象,或者直接将子类对象赋给基类变量:但是基类对象要转换为子类变量时,就必须进行强

java: Set类及子类:TreeSet有序子类,HashSet无序子类

Set类及子类: TreeSet有序子类: HashSet无序(散列)子类 HashSet子类的内容是没有顺序的,单个元素也不会重复的(对象除外). Set<String> allSet = new HashSet<String>(); allSet.add("a"); //重复数据 allSet.add("b"); allSet.add("b"); allSet.add("c"); allSet.ad

UML表达基类,子类关系

1.UML图有如下几类: UML表达基类.子类关系步骤: 1.点击Diagram/class diagram创建类图. 2.选中工具栏的class图标,开始绘制类图 2.1双击可以修改类名 2.2双击方法可以修改方法名访问权限等 2.3 TestActivity继承 Activity

Format类及其子类功能和用法详解

1.   Format类结构: ·        java.lang.Object ·        java.text.Format ·        All Implemented Interfaces: Serializable, Cloneable Direct Known Subclasses: DateFormat, MessageFormat, NumberFormat public abstract class Format extends Object implements S