java继承中构造函数的调用

子类通过super调用父类的构造方法

每一个子类的构造方法都回默认会调用父类的无参构造方法

package no2;
class Person{
	String name;
	int id;
	Person(){
		System.out.println("aaa");
	}
	Person(String name,int id){
		this.name = name;
		this.id = id;
	}
}
class Stu extends Person{
	Stu(){
		//这里会自动加上super,子类不会继承父类构造函数,但是在无参构造中会自动加上super()来调用
		//父类的无参构造函数,所以加不加super都回执行父类无参中的输出aaa
	}
	Stu(String name,int id){
		super(name,id);//调用父类的构造,要传参数,假若没有参数,就会传给父类的无参构造中去
	}
}
public class Main {
	public static void main(String[] args){
		Stu s = new Stu("ad",323);
		System.out.println(s.name+s.id);
	}
}


子类重写了父类方法之后,通过this.方法,不会调用父类的方法,只会调用子类重写之后的方法,如下代码:

package no2;
class A{
	public A(){
		this.print();//执行的是子类的函数,因为子类函数重写了方法、假设子类不重写,那么这里会执行父类的函数
		System.out.println("父类无参构造");
	}
	public void print(){
		System.out.println("父类函数");
	}
}
class B extends A{
	private int num = 100;
	public B(int num){
		//super();默认都回调用父类的无参构造
		this.num = num;
	}
	public void print(){
		System.out.println("子类函数"+this.num);//num输出为0,num此时 还是默认值
	}
}
public class Main {
	public static void main(String[] args){
		new B(3);
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值