一、构造方法
构造器,又称为构造方法。(类中,只有“属性”或者“方法”这两种东西,而构造方法也属于方法,只不过比较特殊)
一般方法,通过对象来调用(object.method)。而构造方法在调用的时候,还没有对象呢(用来构造器以后才有的实例 对象)。
对于上面的几点,逐条解释:
- 通过new关键字调用。
首先,因为构造方法也是一个方法,所以也是需要调用的,比如,定义好Car类以后,现在想要构造一个新的实例,就需要调用这个构造器。
第三点解释
之前课程中,我们在定义类的时候,没有定义构造方法,但是不代表没有,系统会自动定义。(当你在类中定义了以后,系统就不会自动定义了)
比如上面的Car类中,没有定义Car构造方法的时候,用new 调用,仍然能够调用构造方法。第二点解释:
注意构造方法的格式,修饰符后面是没有返回值类型的。不能用void,也更不能用int什么的。
此时,如果用new 调用Car构造方法,就会建立一个实例,并且输出代码中的字符串。
二、示例
代码示例:
package cn.bjsxt.oop;
import javax.swing.text.html.MinimalHTMLWriter;
public class Point {
double x,y,z;
//构造方法,可以帮助我们初始化对象属性,传入参数,
//最好不要跟上面的变量重名,防止歧义
public Point(double _x,double _y,double _z){ //构造器中,是不用返回值的
x = _x;
y = _y;
z = _z;
}
//设置三个点的坐标.
public void setX(double _x){
x = _x;
}
public void setY(double _y){
x = _y;
}
public void setZ(double _z){
x = _z;
}
// 计算距离,需要有返回值了.
//因为要计算两点之间的距离,因此对于这个方法需要传入一个形参,等会传入实参计算
public double distance(Point p){
return Math.sqrt((x-p.x)*(x-p.x) + (y-p.y)*(y-p.y) + (z-p.z)*(z-p.z));
}
public static void main(String[] args){
Point p = new Point(3,4,8);
Point p2 = new Point(1,1,1);
//对p调用计算距离的dist方法,传入p2,即可
System.out.println(p.x);
System.out.println(p.distance(p2));
}
}