Java SE 基础笔记 - 类和对象(下)
在上一部分中,我们对 Java 的类和对象进行了初步了解。本文将深入探讨类和对象的更深入的特性,包括构造方法、方法重载、this 关键字以及访问控制修饰符等内容。
一、构造方法
构造方法是用于初始化对象的特殊方法。它的名称与类名相同,并且没有返回类型。构造方法在创建对象时自动调用,用于设置初始状态。
class Person {
String name;
int age;
// 构造方法
Person(String name, int age) {
this.name = name;
this.age = age;
}
void display() {
System.out.println("姓名: " + name + ", 年龄: " + age);
}
}
public class Test {
public static void main(String[] args) {
Person p1 = new Person("张三", 20);
Person p2 = new Person("李四", 25);
p1.display();
p2.display();
}
}
在上例中,Person
类中定义了一个构造方法,当新对象创建时,它会被调用以初始化 name
和 age
。
二、方法重载
方法重载是指在同一个类中,可以根据不同的参数类型和数量,定义多个同名方法。重载的方法可以共存,Java 将根据调用时传递的参数类型和数量来选择合适的方法。
class MathUtil {
// 方法重载
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
int add(int a, int b, int c) {
return a + b + c;
}
}
public class Test {
public static void main(String[] args) {
MathUtil math = new MathUtil();
System.out.println("两个整数相加: " + math.add(5, 10)); // 调用int版本
System.out.println("两个浮点数相加: " + math.add(5.0, 10.0)); // 调用double版本
System.out.println("三个整数相加: " + math.add(5, 10, 15)); // 调用int版本
}
}
在上面的示例中,MathUtil
类中定义了三个 add
方法,分别处理不同数量和类型的参数。
三、this 关键字
this
关键字是对当前对象的引用。在构造方法中,经常用到 this
来区分实例变量和参数。
class Car {
String color;
String model;
Car(String color, String model) {
this.color = color; // this.color 指代实例变量
this.model = model; // this.model 指代实例变量
}
void display() {
System.out.println("汽车颜色: " + color + ", 模型: " + model);
}
}
在该例子中,构造方法的参数 color
和 model
与类的实例变量同名,因此需要使用 this
关键字来区分。
四、访问控制修饰符
Java 提供了四种访问控制修饰符:public
、protected
、private
和默认(缺省)。它们分别用于控制其他类对某一类或其成员的访问权限。
public
:公共的,任意类可以访问。protected
:受保护的,只有同一包中的类以及子类可以访问。private
:私有的,只有当前类可以访问。- 默认(缺省):只有同一包中的类可以访问。
class Student {
private String name; // 只能在 Student 类内部访问
protected int age; // 在同一包和子类中访问
public String address; // 在任何地方都可以访问
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class Test {
public static void main(String[] args) {
Student student = new Student();
student.setName("王小明"); // 通过公有方法设置名字
student.age = 18; // 直接访问受保护属性
student.address = "北京"; // 直接访问公有属性
System.out.println(student.getName()); // 获取名字
}
}
综上所述,掌握类和对象的构造方法、方法重载、this
关键字以及访问权限控制,对于理解 Java 的面向对象编程起着至关重要的作用。希望通过这些示例能够帮助理解和掌握 Java 中的类和对象的使用。