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 类中定义了一个构造方法,当新对象创建时,它会被调用以初始化 nameage

二、方法重载

方法重载是指在同一个类中,可以根据不同的参数类型和数量,定义多个同名方法。重载的方法可以共存,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);
    }
}

在该例子中,构造方法的参数 colormodel 与类的实例变量同名,因此需要使用 this 关键字来区分。

四、访问控制修饰符

Java 提供了四种访问控制修饰符:publicprotectedprivate 和默认(缺省)。它们分别用于控制其他类对某一类或其成员的访问权限。

  • 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 中的类和对象的使用。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部