类的构造方法
类的构造方法
我们之所以能够通过new关键字来实例化一个类,这完全是由于该类提供了某种形式(带参数或不带参数)的构造方法。
|- 构造方法的名字和类名相同,并且没有返回值。
|-构造方法主要用于为类的对象定义初始化状态。
|-我们不能直接调用构造方法,必须通过new关键字来自动调用,从而创建类的实例。
Java的类都要求有构造方法,如果没有定义构造方法,那么Java编译器会为我们提供一个缺省的构造方法,也就是不带参数的构造方法。我们可以用反编译工具javap.exe来查看类中是否有构造方法。
public class Point {
public Point() {}
}
含参构造方法
我们希望当去创建一个对象实体之后,对象的变量有一个初始的值,并不是默认的值,而不是程序员自己手动的去使用对象操作变量名来给它赋值。我们希望的是一旦产生了对象,对象的变量就有了一个初始值。这好比自来水笔公司在生产笔的时候可能没有加入墨水,这就需要用户自己去加入墨水,但是用户希望在购买的时候自来水笔就已经有了墨水,此时可以让服务员加墨水。这个可以通过Java中的构造方法去实现。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class Point {
int x ,y;
// int x ,int y;// error编译器将int y当成变量名,如果int_y可以
public Point() {
x = 5; // 对成员变量赋值
y = 5; // 对成员变量赋值
}
public void output() {// 成员方法
System.out.println("x = "+x);
System.out.println("y = "+y);
}
public static void main(String[] args) {
Point pt;
pt = new Point();
//pt.x = 10; // 程序员手动操作变量更改变量
//pt.y = 20;
pt.output();
}
}
有时候在构造的时候我们可以去指定变量属性的值。这就好比用户在购买自来水笔的时候可以叫服务员加入什么颜色的墨水。这就是在构造函数中传参。带参数的构造函数在调用的时候也要传入相应类型的参数。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class Point {
int x ,y; // 成员变量(直接写在类中的变量)
public Point(int a,int b) {// 含参构造方法
x = a;
y = b;
}
public void output() {// 成员方法(直接写在类中的方法)
System.out.println("x = "+x);
System.out.println("y = "+y);
}
public static void main(String[] args) {
Point pt;
pt = new Point(5,5);
//pt.x = 10;
//pt.y = 20;
pt.output();
}
}
构造方法最大的用处就是初始化成员变量。
当一个类中包含了其它的含参的构造方法时,编译器就不会自动为我们添加了,它认为既然你已经定义了其它的构造方法,那么我还厚颜在次做什么呢?你要用我,就自己显示的写出来吧,它也需要明媒正娶啊!它也需要做正室啊!见不得小三。所以在声明一个类的时候一定要把这个”正室“显示的写出来,否则很多时候是不方便的。
构造方法定义参数时出错
public Point(int a,b) {// public Point(int a,int b) {
}