疯狂java笔记——构造器

java类必须包含一个或一个以上构造器

(系统会提供无参构造器)

public class ConstructorTest

{

public String name;

public int count;

// 提供自定义的构造器,该构造器包含两个参数

public ConstructorTest(String name , int count)

{

// 构造器里的this代表它进行初始化的对象

// 下面两行代码将传入的2个参数赋给this代表对象的name和count实例变量

this.name = name;

this.count = count;

}

public static void main(String[] args)

{

// 使用自定义的构造器来创建对象

ConstructorTest tc = new ConstructorTest("疯狂Java讲义" , 90000);

System.out.println(tc.name);

System.out.println(tc.count);

}

}

一旦自定义构造器,系统就不提供默认构造器了,也就不能使用 new ConstructorTest ()来创造实例,因为该类不再包含无参数的构造器

如果想继续使用无参数的构造器,可以为该类提供过个构造器,就是构造器的重载

因为构造器通常被其他方法调用,返回该类实例,通常设置为public,容许任何类来创建该类的对象。也可以设置成protected,主要用于被其子类调用。设置成private,阻止其他类创建该类实例。

构造器重载

同一个类有多个构造器,构造器形参列表不同,名字相同。和方法重载有点相似。

public class ConstructorOverload

{

public String name;

public int count;

public ConstructorOverload(){

}

public ConstructorOverload(String name , int count)

{

this.name = name;

this.count = count;

}

public static void main(String[] args)

{

ConstructorOverload oc1 = new ConstructorOverload();

ConstructorOverload oc2 = new ConstructorOverload("轻量级Java EE企业应用实战", 300000);

System.out.println(oc1.name + " " + oc1.count);

System.out.println(oc2.name + " " + oc2.count);

}

}

构造器形参列表部分相同:

public class Apple

{

public String name;

public String color;

public double weight;

public Apple(){

}

public Apple(String name , String color)

{

this.name = name;

this.color = color;

}

public Apple(String name , String color , double weight)

{

// 通过this调用另一个重载的构造器的初始化代码

this(name , color);

// 下面this引用该构造器正在初始化的Java对象

this.weight = weight;

}

}

猜你喜欢

转载自blog.csdn.net/qq_36332133/article/details/81182693