一、构造方法
Java 构造方法有以下特点:
(1)方法名必须与类名相同
(2)可以有 0 个、1 个或多个参数
(3)没有任何返回值,包括 void
(4)默认返回类型就是对象类型本身
(5)只能与 new 运算符结合使用
值得注意的是,如果为构造方法定义了返回值类型或使用 void 声明构造方法没有返回值,编译时不会出错,但 Java 会把这个所谓的构造方法当成普通方法来处理。
这时候大家可能会产生疑问,构造方法不是没有返回值吗?为什么不能用 void 声明呢?
简单的说,这是 Java 的语法规定。实际上,类的构造方法是有返回值的,当使用 new 关键字来调用构造方法时,构造方法返回该类的实例,可以把这个类的实例当成构造器的返回值,因此构造器的返回值类型总是当前类,无须定义返回值类型。但必须注意不要在构造方法里使用 return 来返回当前类的对象,因为构造方法的返回值是隐式的。
构造方法的语法格式如下:
class class_name {
public class_name(){} // 默认无参构造方法
public ciass_name([paramList]){} // 定义构造方法
…
// 类主体
}
在一个类中,与类名相同的方法就是构造方法。每个类可以具有多个构造方法,但要求它们各自包含不同的方法参数。
构造方法主要有无参构造方法和有参构造方法两种,示例如下:
public class MyClass {
private int m; // 定义私有变量
MyClass() {
// 定义无参的构造方法
m = 0;
}
MyClass(int m) {
// 定义有参的构造方法
this.m = m;
}
}
该示例定义了两个构造方法,分别是无参构造方法和有参构造方法。在一个类中定义多个具有不同参数的同名方法,这就是方法的重载。这两个构造方法的名称都与类名相同,均为 MyClass。在实例化该类时可以调用不同的构造方法进行初始化。
注意:类的构造方法不是要求必须定义的。如果在类中没有定义任何一个构造方法,则 Java 会自动为该类生成一个默认的构造方法。默认的构造方法不包含任何参数,并且方法体为空。如果类中显式地定义了一个或多个构造方法,则 Java 不再提供默认构造方法。
二、一个标准的类
1.所有成员都要使用private修饰
2.为每一位成员编写get set方法
3.编写一个无参构造函数
4.编写一个有参构造函数
示例:
package jyg;
public class jyg08a1 {
public static void main(String[] args) {
jyg08a2 stu1= new jyg08a2("jyg");
stu1.setAge(19);
System.out.println("我是"+stu1.getName()+"我已经"+stu1.getAge()+"岁");
System.out.println("================");
jyg08a2 stu2= new jyg08a2 ("zjl",40);
System.out.println("我是"+stu2.getName()+"我已经"+stu2.getAge()+"岁");
stu2.setAge(41);
System.out.println("我是"+stu2.getName()+"我已经"+stu2.getAge()+"岁");
}
}
package jyg;
public class jyg08a2{
private String name;
private int age;
public jyg08a2(){
}
public jyg08a2(String name) {
super();
this.name= name;
}
public jyg08a2(String name,int age) {
super();
this.name= name;
this.age= age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age=age;
}
}
运行结果:
我是jyg我已经19岁
================
我是zjl我已经40岁
我是zjl我已经41岁