Java之构造器

一. 构造器

构造器的做用是构造并初始化实例对象。当建立一个对象时,系统为这个对象的属性进行初始化。java

二. 语法

class 类名
{
    变量声明;
    类的名称(参数列表)
    {
         方法体
    }
}

构造器和类要有相同的名字,同时避免在构造器中定义与实例域重名的局部变量。例如this

class student
{
    private String name;
    private int studentID;
    //构造器
    public student(String n,int m){
        name=n;
        studentID=m;
    /*定义与实例域重名的局部变量
    *这种错误很难被发现
        String name=n;
        int studentID=m;
       */
    }
}

三. 特色

  • 构造器和类具备相同的名字code

  • 一个类能够有多个构造器对象

  • 构造器能够有0、1或多个参数编译器

  • 构造器没有返回值和返回类型编译

  • 构造器不能被显示调用,老是与new运算符仪器被调用,在建立一个类的新队形的同时,系统会自动调用该类的构造器为新对象初始化。class

在java的每一个类中,至少要有一个构造器,没有定义的话,编译器将自动插入缺省的构造器。
这种默认初始化被全部数值类型设为0,布尔值为false,全部引用类型的属性设置为null变量

无参数构造器

若是类中提供了至少一个构造器,可是没有提供无参数的构造器,构造对象没有提供参数就会被视为不合法。权限

class student
{
    private String name;
    private int studentID;
    //构造器
    public student(String name,int studentID){
        this.name=name;
        this.studentID=studentID;
    }
}
student=new student(); //产生错误

解决方法:能够为java类保留无参数的构造器,为一个类编写了有参数的构造器,同时建议为该类编写一个无参数的构造器。通常把构造器设置为public访问权限,设置为private是为了阻止其余类建立该类的实例。数据类型

四.构造器重载和调用

1.方法签名

一个方法的签名包括方法名、参数类型和个数,但不包括返回值。
类的定义中存在两个或两个以上的同名成员方法,为了使编译器能区分同名的成员方法,使同名方法的参数个数或参数的数据类型不一样,从而使编译器可以挑选具体执行某个方法。

class student
{
    private String name;
    private String major;
    private String school;
    private int studentID;
    //构造器1
    public student(String name,int studentID){
        this.name=name;
        this.studentID=studentID;
    }
    //构造器2
     public student(String school){
        this.school=school;
    }
    //构造器3
     public student(String major,int studentID){
        this.major=name;
        this.studentID=studentID;
    }
}

2.调用另外一个构造器

class student
{
    private String name;
    private String major;
    private String school;
    private int studentID;
    //构造器1
    public student(String name,int studentID){
        this("大山高中") //调用另外一个构造器
        this.name=name;
        this.studentID=studentID;
    }
    //构造器2
     public student(String school){
        this.school=school;
    }

3.显式调用父类构造器

当咱们想调用超类的的某个方法,可是当前类也有相同的方法,这时可使用super关键字(只是一个指示编译器调用超类方法的特殊关键字)。

class A{
    public A(){
        System.out.print("A");
    }
}
class B extends A{
    public B(){
        super();//调用父类构造方法,打印A
        System.out.print("B");
    }
}
相关文章
相关标签/搜索