[笔记]构造函数constructor

main()方法是应用程序的起初点,当应用程序运行起来的时候,方法main是第一个调用的内容。

每创建一个类的实例都去初始化它的所有变量是乏味的。如果一个对象在被创建时就完成了所有的初始工作,将是简单的和简洁的。因此,Java在类里提供了一个特殊的成员函数,叫做构造函数(Constructor)。
  一个构造函数是对象被创建时初始对象的成员函数。它具有和它所在的类完全一样的名字。一旦定义好一个构造函数,创建对象时就会自动调用它。构造函数没有返回类型,即使是void类型也没有。这是因为一个类的构造函数的返回值的类型就是这个类本身。构造函数的任务是初始化一个对象的内部状态,所以用new操作符创建一个实例后,立刻就会得到一个清楚、可用的对象。

简单的说来:
构造函数就是当你声明一个新的变量的时候,自动执行的函数,通常构造函数都是做一些初始化的工作。你也可以自己编写构造函数。构造函数可以有多个,通过参数列表区分,就是参数的个数,类型和顺序。当你没有为一个类写构造函数,而有用这个类声明了一个变量,系统会自动给你的类加一个构造函数,通常会继承自父类的构造函数。所有类的祖宗类是object类。

看这个例子,从CSDN看到的:

public class MyClass {

public MyClass() {
this(15);
System.out.println("constructor");
}

public MyClass(String s1) {
this(); //调用没有参数的构造函数,从构造函数中调用构造函数只允许用this(), 而且只允许放在构造函数的第一行
System.out.println(s1);
}

public MyClass(int i) {
System.out.println("finally comes here"+i);
}

public static void main(String[] args) {
//看看调用不同的构造函数有什么区别。
MyClass mc = new MyClass();
MyClass mc1 = new MyClass("another test");
}
}


执行结果:
finally comes here15
constructor
finally comes here15
constructor
another test

这是怎么回事呢?先调用main里面的东东,创建新实例,实例没带参数,于是去找构造函数。找到了第一个MyClass的构造函数,第二行“this(15)”实际上重载了MyClass(int i) ,于是i=15,输出“finally comes here15”。调用完了之后,再回到MyClass(),输出“constructor”。
然后回到main方法,执行“MyClass mc1 = new MyClass("another test");”找到带有字符串参数的构造函数 public MyClass(String s1) 。第二行“this(); ”于是找到未带参数的构造函数MyClass(),于是重复以上操作。最后执行 System.out.println("finally comes here"+i)。于是输出如上所示。

还有一个问题也值得注意:如果一个类没有定义任何构造函数方法,当用new与该类结合在一起时,还是可以创建一个新的对象。但你可能不得不设置它的实例变量,或者调用该对象需要用来对自身进行初始化的其他方法。

通过在你自己的类中定义构造函数方法,你可以为实例变量设置初时值。调用基于那些变量的方法,调用在其他对象上的方法设置一个对象的初始属性,你还可以重载构造函数的方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值