new对象实际上就是调用类的构造方法
public class Point {
public int x,y,z;
public Point(int a,int b,int c) {
x=a;
y=b;
z=c;
}
}
public class PointTest {
public static void main(String[] args) {
Point p=new Point(1,2,3);
}
}
构造器
构造器一般用来创建对象的同时初始化对象
class Person{
String name;
int age;
public Person(String n , int a){ name=n; age=a;}
}
构造器的特征
- 它具有与类相同的名称
- 它不声明返回值类型。(与声明为void不同)
- 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值
构造器分类
- 隐式无参构造器,由系统默认提供。
- 显示定义一个或多个构造器(无参、有参)。
注 意
- Java语言中,每个类都至少有一个构造器。未显示定义时使用的默认的无参构造器。
- 默认构造器的修饰符与所属类的修饰符一致,只有public和缺省两种。显示定义可有其他选择。
- 一旦显式定义了构造器,则系统不再提供默认构造器。那么如果显式定义了一个有参构造方法,如果想使用无参构造方法,就必须重新构造一个无参构造方法。
- 一个类可以创建多个重载的构造器
- 父类的构造器不可被子类继承
显示定义的构造方法
- 给无参的构造方法赋值,以后调用对象时默认为1和zhangsan
public class Person2 {
//在构造方法中给类成员变量赋值,可改变其默认值,以后调用时若不对成员变量赋值,每一次都默认为1和zhangsan
public Person2() {
age=1;
name="zhangsan";
}
}
- 有参的构造方法,可在new对象时直接传入实参
public class Person2{
protected Person2(int a,String n) {
age=a;
name=n;
}
}
构造器的重载
- 为什么构造器需要重载?构造器重载使得对象的创建更加灵活,方便创建各种不同的对象。
- 与方法重载类似,构造器(构造方法)重载,参数列表必须不同。
- 构造器重载举例:
public class Person{
public Person(String name, int age, Date d) {this(name,age);…}
public Person(String name, int age) {…}
public Person(String name, Date d) {…}
public Person(){…}
}