Java从入门到精通——面向对象编程基础

引言

Java是一种面向对象的编程语言,广泛应用于各个领域。本文将介绍Java的面向对象编程基础,包括类、对象、封装、继承和多态等概念。我们将通过代码示例来演示这些概念的应用,帮助读者理解和掌握面向对象编程的基本原理。

类和对象

在Java中,类是对象的模板,用于定义对象的属性和行为。对象是类的实例,具有类定义的属性和行为。

类的定义

public class Circle {
    private double radius;  // 半径

    // 构造方法
    public Circle(double radius) {
        this.radius = radius;
    }

    // 计算面积
    public double getArea() {
        return Math.PI * radius * radius;
    }

    // 计算周长
    public double getPerimeter() {
        return 2 * Math.PI * radius;
    }
}

上述代码定义了一个名为Circle的类,表示一个圆形对象。该类具有一个私有的radius属性,以及计算面积和周长的方法。

对象的创建和使用

Circle circle = new Circle(5.0);  // 创建Circle对象,半径为5.0
double area = circle.getArea();  // 调用对象的方法计算面积
double perimeter = circle.getPerimeter();  // 调用对象的方法计算周长
System.out.println("Area: " + area);
System.out.println("Perimeter: " + perimeter);

上述代码创建了一个Circle对象,并调用对象的方法计算面积和周长。结果将被输出到控制台。

封装

封装是面向对象编程的重要原则之一,通过封装可以隐藏对象的内部实现细节,只暴露必要的接口给外部使用。

访问修饰符

Java提供了四种访问修饰符:privatepublicprotected和默认(不写修饰符)。这些修饰符用于控制类的成员(属性和方法)的可见性。

  • private:表示私有成员,只能在类内部访问。
  • public:表示公共成员,可以在任何地方访问。
  • protected:表示受保护的成员,可以在同一个包内以及子类中访问。
  • 默认(不写修饰符):表示包级可见,只能在同一个包内访问。

封装示例

public class Person {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age < 0 || age > 150) {
            throw new IllegalArgumentException("Invalid age");
        }
        this.age = age;
    }
}

上述代码定义了一个名为Person的类,表示一个人的对象。该类具有私有的nameage属性,以及对应的访问器和修改器方法。

Person person = new Person();
person.setName("John");
person.setAge(25);
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());

上述代码创建了一个Person对象,并设置其姓名和年龄。通过访问器方法可以获取对象的属性值。

继承

继承是面向对象编程的另一个重要特性,它允许一个类派生出子类,并继承父类的属性和方法。

继承示例

public class Student extends Person {
    private String major;

    public String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }
}

上述代码定义了一个名为Student的类,表示一个学生对象。该类继承自Person类,并添加了一个major属性。

Student student = new Student();
student.setName("Alice");
student.setAge(20);
student.setMajor