Head First Java笔记之构造函数篇

4 篇文章 0 订阅
构造函数

public class A {
	public A() {
		
	}
}


构造函数看起来像方法,但是它并不是方法。它带有new的时候会执行程序代码,也就是新建一个对象的时候执行。

eg:A a = new A();  //严格来说,这是唯一在构造函数之外能够调用构造函数的方式。

在类中,即使我们没有编写构造函数,编译器也会帮助我们完成(默认是无参构造函数)


编译器会在我们没有写构造函数的时候给我们完成一个无参构造函数,如果我们已经写了一个有参数的构造函数,并且我们需要一个没有参数的构造函数,必须我们手动完成,编译器在已经有构造函数的前提下,是不会帮助我们完成构造函数的创建的。


当子类继承父类的时候,会先执行父类的构造方法,在执行子类的构造方法。

原因:当我们new一个对象的时候,子类的构造函数进入堆栈最上方的堆栈块,子类的对象调用父类的构造函数,导致父类的构造函数进入栈顶。执行的时候,先执行父类的构造函数,执行完成,父类的堆栈块会被弹出,接着执行子类的构造函数。先进后出。


super关键字

当父类中有多个构造函数,子类在创建对象的时候,会默认先执行父类的中的无参构造函数。编译器会自动在子类的构造函数中加入了调用父类的默认构造函数(调用父类的构造函数必须使用关键字super)

public class Demo01{
    Demo01(){
        super();
        System.out.println("superA");
    }
如果我们想要调用父类中的指定的构造函数,调用方法如下:

class Demo01{
	Demo01(){
		super();
		System.out.println("superA");
	}
	Demo01(String s){
		System.out.println("s------"+s);
	}
}
public class Test02 extends Demo01{
	Test02(){
		super("aaa");
		System.out.println("thisB");
	}
	public static void main(String[] args) {
		Demo01 t = new Test02();
	}
}

输出结果如下:

s------aaa
thisB

父类和子类相当于现实中的父子关系,我们都知道不可能先有儿子后有老子。










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值