构造器的特征
(1) 它具有与类相同的名称
(2) 它不声明返回值类型。(与声明为 void 不同)
(3) 不能被static
、final
、synchronized
、abstract
、native
修饰,不能有return 语句返回值
。
构造器的作用:①创建对象;②给对象进行初始化
(1) 如:Order o = new Order();
、Person p = new Person(Peter,15);
(2) 如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的构造方法中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们要“洗澡”了。
修饰符 类名 (参数列表) {
初始化语句;
}
举例:
public class Animal {
private int legs;
// 构造器
public Animal() {legs = 4;}
//如果不编写构造器,会使用系统默认的构造器
public void setLegs(int i) {legs = i;}
public int getLegs(){return legs;}
}
解释(对应上文构造器的作用):
①创建 Animal 类的实例: Animal a=new Animal();
②调用构造器,将 legs 初始化为 4 。
根据参数不同,构造器可以分为如下两类:
(1) 隐式无参构造器(系统默认提供)
(2) 显式定义一个或多个构造器(无参、有参)
注意:
(1) Java 语言中,每个类都至少有一个构造器
(2) 默认构造器的修饰符与所属类的修饰符一致
(3) 一旦显式定义了构造器,则系统不再提供默认构造器
(4) 一个类可以创建多个重载的构造器
(5) 父类的构造器不可被子类继承
标重点:new对象 实际上就是调用 类的构造方法!
(1) 在显示构造方法中使用设定的默认值
创建一个Person5类:
package day06;
public class Person5 {
/**
* 如果显示的定义了构造方法,那么就会使用显示的构造方法
*/
public Person5() { //构造方法
age = 1; //设定的age默认值1
name = "zhangsan"; //设定的name默认值zhangsan
}
public int age;
public String name;
public void showInfo() {
System.out.println(age);
System.out.println(name);
}
}
编写Test.java调用Person5方法:
package day06;
public class Test {
public static void main(String[] args) {
Person5 p5 = new Person5(); //new就是调用构造方法的过程
p5.showInfo();
}
}
(2) 在调用构造方法过程,根据需要自己设定值
创建一个Person5类:
package day06;
public class Person5 {
/**
* 可以写 带参数的构造方法
*/
public Person5(int a,String n) { //给构造方法的 参数列表 添加 两个形参
age = a;
name = n;
}
public int age;
public String name;
public void showInfo() {
System.out.println(age);
System.out.println(name);
}
}
编写Test.java调用Person5方法:
package day06;
public class Test {
public static void main(String[] args) {
Person5 p5 = new Person5(2,"lisi"); //在new对象时,同样给参数列表的形参赋值
p5.showInfo();
}
}
答案1:
package day06;
public class Person6 {
public Person6() { //构造器
age = 18;
}
public int age;
}
Test.java
package day06;
public class Test {
public static void main(String[] args) {
Person6 p6 = new Person6();
System.out.println(p6.age); //运行Test.java后,输出构造方法中age的默认值18
}
}
package day06;
public class Person6 {
public Person6(int a, String n) {
// age = 18;
age = a;
name = n;
}
public int age;
public String name;
}
Test.java
package day06;
public class Test {
public static void main(String[] args) {
Person6 p6 = new Person6(12,"zhangsan");
System.out.println(p6.age);
System.out.println(p6.name);
}
}
答案:
package day06;
public class Point { // 要求(1)
public Point(int m, int n, int k) {
x = m;
y = n;
z = k;
}
int x;
int y;
int z;
public void setPoint(int m, int n, int k) { //要求(2)
x = m;
y = n;
z = k;
}
}