子类对象实例化全过程

最近在学习java基础知识,觉得子类实例化的过程很有意思,虽然很基础,但是对初学者对子类实例化理解很有帮助,今天跟大家分享一下

继承

继承是面向对象的一个显著特征。继承是从已有类中派生出新类,新类具有继承类的数据属性和行为,并可以扩展新的能力。由此我们可以看出,继承最重要的实际意义在于,复用父类的代码,少量的类我们不能够发现其优势,当有100类且具有相同的属性与行为时,我们通过继承便能够极大的降低程序的代码量

当然我们今天讲主要内容不是继承,而是子类继承父类实例化的全过程

 

废话不多说,先上代码

public class SubclassTest {
	public static void main(String[] args) {
		Dog d = new Dog();
		d.setAnimal("动物");
		d.setCat("猫");
		d.setDog("狗");
		System.out.println("animal:"+d.getAnimal()+"cat:"+d.getCat()+"dog:"+d.getDog());
		//继承父类的toString()方法
		System.out.println(d.toString());
	}

}
 
class Animal {
	private String animal;

	public String getAnimal() {
		return animal;
	}

	public void setAnimal(String animal) {
		this.animal = animal;
	}

	public Animal() {
		super();
		System.out.println("i am an animal");
	}
}

class Cat extends Animal {
	private String cat;

	public String getCat() {
		return cat;
	}

	public void setCat(String cat) {
		this.cat = cat;
	}

	public Cat() {
		super();
		System.out.println("i am a cat");
	}
	
}

class Dog extends Cat {
	private String dog;

	public String getDog() {
		return dog;
	}

	public void setDog(String dog) {
		this.dog = dog;
	}

	public Dog() {
		super();
		System.out.println("i am a dog");
	}
}

运行结果:

i am an animal
i am a cat
i am a dog
animal:动物cat:猫dog:狗
Test.Dog@15db9742

 

为什么会出现这样的结果呢?

在Java中,一个类的构造方法在下面两种情况下总是会被执行:
1)创建该类的对象时(实例化)
2)创建该类的子类的对象时(子类的实例化)
子类在实例化时,会首先执行父类的构造方法,然后才执行子类的构造方法

 

实例化过程如图:

 

转载于:https://my.oschina.net/u/3696850/blog/1548830

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值