构造方法的定义
如果需要在实例化对象的同时就为这个对象的属性进行赋值,可以通过构造方法来实现。构造方法时类的一个特殊成员,它会在类实例化对象时被自动调用。
- 方法名与类名相同。
- 在方法名的前面没有返回值类型的声明。
- 在方法中不能使用return语句返回一个值。(可以使用return作为结束方法)
class Person{
int a; // 定义一个int类型的成员变量
// 定义一个有参的构造方法
public Person(int s) {
a = s;
return; // 可以使用return作为结束方法
}
public int speak() {
return a;
}
}
public class Example01 {
public static void main(String[] args) {
// 创建一个带参的Person对象
Person p = new Person(12);
System.out.println(p.speak());
}
}
构造方法的重载
在一个类中可以定义多个构造方法,只需要每个构造方法的参数类型或参数个数不同即可。
class Person{
String name;
int age;
// 定义两个参数的构造方法
public Person(String name,int age) {
this.name = name;
this.age = age;
}
//定义一个参数的构造方法
public Person(String name) {
this.name = name;
}
//定义一个无参的构造方法
public Person() {
}
public void speak() {
System.out.println("name = "+name+"age = "+age);
}
}
public class Example01 {
public static void main(String[] args) {
// 创建两个Person对象
Person p = new Person("李华");
Person p1 = new Person("李明",12);
p.speak();
p1.speak();
}
}
注意
在Java中的每一个类都至少有一个构造方法,如果在一个类中没有定义构造方法,系统会自动为这个类创建一个默认的构造方法,在其方法体中没有任何代码。
补充
构造方法可以定义成私有属性,但是调用时则不能实现。原因是私有属性只能在它所在类的内部访问。当调用时则可以在本类中创建对象,并将其设为静态的,通过类名来访问。
class Person{
String name;
int age;
// 定义两个参数的构造方法
private Person(String name,int age) {
this.name = name;
this.age = age;
}
public void speak() {
System.out.println("name = "+name+"age = "+age);
}
static Person p1 = new Person("李明",12);
}
public class Example01 {
public static void main(String[] args) {
// 通过静态方法调用
Person.p1.speak();
}
}
作者对读者的话
作为初学者,遇到问题,尽量先自己解决,可以通过百度来查,你现阶段遇到的问题,前人都会遇到,而且都有完美的解答。