目录
- 创建类
- 测试构造器的重载
- 分析
创建类
public class Person02 {
//属性:
String name;
int age;
double height;
//空构造器
public Person02(){
}
public Person02(String name,int age,double height){
//当形参名字和属性名字重名的时候,会出现就近原则:
//在要表示对象的属性前加上this.来修饰 ,因为this代表的就是你创建的那个对象
this.name = name;
this.age = age;
this.height = height;
}
public Person02(String a,int b){
name = a;
age = b;
}
//方法:
public void eat(){
System.out.println("我喜欢吃饭");
}
}
这段代码定义了一个名为Person02
的Java类,这个类具有以下组成部分:
-
属性:
name
:一个String类型的属性,用于存储人的姓名。age
:一个int类型的属性,用于存储人的年龄。height
:一个double类型的属性,用于存储人的身高。
-
构造器:
- 空构造器:这是一个没有任何参数的构造器。
Person02(String name, int age, double height)
:这是一个带参数的构造器,它接受三个参数(姓名、年龄和身高)并使用这些参数的值初始化对象的相应属性。这里使用了this
关键字来区分参数和属性。当参数和属性的名称相同时,使用this
关键字可以明确表示你想要引用的是对象的属性而不是参数。Person02(String a, int b)
:这是另一个带参数的构造器,它接受两个参数(可能代表姓名和年龄),并使用这些参数的值初始化对象的相应属性。
-
方法:
eat()
:这是一个公共方法,它没有参数。当这个方法被调用时,它会输出“我喜欢吃饭”。
这个类提供了多种方式来创建Person02
对象,并为其属性赋值。例如,你可以使用空构造器创建一个所有属性都使用默认值的对象,或者使用带两个参数的构造器创建一个只设置了姓名和年龄的对象,而身高保持默认值。使用带三个参数的构造器则可以同时设置所有属性。
测试构造器的重载
public class Test02 {
//这是一个main方法,是程序的入口:
public static void main(String[] args) {
/*
1.一般保证空构造器的存在,空构造器中一般不会进行属性的赋值操作
2.一般我们会重载构造器,在重载的构造器中进行属性赋值操作
3.在重载构造器以后,假如空构造器忘写了,系统也不会给你分配默认的空构造器了,那么你要调用的话就会出错了。
4. 当形参名字和属性名字重名的时候,会出现就近原则:
在要表示对象的属性前加上this.来修饰 ,因为this代表的就是你创建的那个对象
*/
Person02 p = new Person02();
/*p.age = 20;
p.name = "HaHa";
p.height = 170.4;*/
Person02 p2 = new Person02("HaHa",18,170.4);
System.out.println(p2.age);
System.out.println(p2.height);
System.out.println(p2.name);
}
}
分析
这段Java代码定义了一个名为Test02
的类,该类包含一个main
方法作为程序的入口点。在main
方法中,代码创建了两个Person02
类的对象,并对它们进行操作。以下是对代码的详细解释:
-
Person02 p = new Person02();
: 这行代码创建了一个Person02
类的对象p
,并使用无参数的构造器(空构造器)进行初始化。由于空构造器中没有进行任何属性赋值操作,因此对象p
的属性将保持它们的默认值(name
为null
,age
为0
,height
为0.0
)。 -
注释掉的部分代码:这部分代码被注释掉了,但如果取消注释,它将为对象
p
的属性赋值。/* p.age = 20; p.name = "HaHa"; p.height = 170.4; */
-
Person02 p2 = new Person02("HaHa", 18, 170.4);
: 这行代码创建了另一个Person02
类的对象p2
,并使用带有三个参数的构造器进行初始化。这个构造器接收姓名、年龄和身高作为参数,并将这些值赋给对象p2
的相应属性。 -
接下来的三行代码打印对象
p2
的属性值:System.out.println(p2.age); // 打印p2的年龄 System.out.println(p2.height); // 打印p2的身高 System.out.println(p2.name); // 打印p2的姓名
输出将是:
20 170.4 HaHa
注释中还提到了一些关于Java构造器的重要概念:
- 保证空构造器的存在:通常,为了确保类的可实例化性,会提供一个无参数的空构造器。这样,即使不提供任何参数,也可以创建类的对象。
- 重载构造器:可以通过定义多个构造器来重载它们,每个构造器有不同的参数列表。这使得在创建对象时能以不同的方式初始化对象的属性。
- 忘记写空构造器的情况:如果类中定义了其他构造器,但没有显式地定义空构造器,那么系统不会自动提供一个默认的空构造器。如果尝试调用不存在的空构造器,编译器会报错。
- 使用
this
关键字:当构造器的参数名和类的属性名相同时,可以使用this
关键字来区分它们。this
引用当前对象,所以this.属性名
表示的是对象的属性,而不是构造器的参数。