前言
在 Java 中,继承是面向对象编程中最为基本的概念之一。继承可以使代码重用更加容易,同时也可以使程序更加易于维护和扩展。本文将介绍 Java 继承的概念、用法和实例。
一、继承是什么?
Java 继承的概念是指一个类可以从另一个类中继承属性和方法。被继承的类称为父类或者超类,继承这个类的类被称为子类或者派生类。子类可以继承父类中的属性和方法,同时可以重写父类中的方法或者添加新的方法和属性。Java 继承使用关键字 extends 来实现。
二、代码示例
以下是一个简单的实例,其中子类 Employee 继承父类 Person:
public class Person {
private String name;
private int age;
}
public class Employee extends Person {
private double salary;
private String department;
}
在上面的例子中,Employee 类继承了 Person 类中的属性和方法,同时也添加了新的属性 salary 和 department。Employee 类可以通过调用 getter 和 setter 方法来访问继承自 Person 类的属性。
Java 继承允许子类重写父类中的方法。子类必须在方法名、参数列表以及返回类型上与父类的方法完全一致,同时可以在方法体中重新实现该方法。这种特性可用于实现多态性,使得同一方法可以针对不同的对象具有不同的行为。
以下是一个示例,其中子类 Student 重写了父类 Person 中的方法 getName():
public class Person {
private String name;
private int age;
public String getName() {
return this.name;
}
}
public class Student extends Person {
private String school;
@Override
public String getName() {
return "Student: " + super.getName();
}
}
在上面的例子中,子类 Student 重写了父类 Person 中的 getName() 方法,并在方法体中添加了新的实现。其中 super.getName() 调用了父类 Person 中的 getName() 方法。通过重写方法,Student 类实现了对基类方法的定制化。
完整示例:
public class Person {
private String name;
private int age;
// 为简洁起见,省略了构造函数、getter和setter。
public String getName() {
return this.name;
}
}
public class Employee extends Person {
private double salary;
private String department;
// 为简洁起见,省略了构造函数、getter和setter。
}
public class Student extends Person {
private String school;
// 为简洁起见,省略了构造函数、getter和setter。
@Override
public String getName() {
return "Student: " + super.getName();
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person();
Employee employee = new Employee();
Student student = new Student();
person.setName("John Smith");
System.out.println("Name: " + person.getName()); // 输出: Name: John Smith
employee.setName("Alice Johnson");
employee.setSalary(5000);
employee.setDepartment("Engineering");
System.out.println("Name: " + employee.getName()); // 输出: Name: Alice Johnson
System.out.println("Salary: " + employee.getSalary()); // 输出: Salary: 5000
System.out.println("Department: " + employee.getDepartment()); // 输出: Department: Engineering
student.setName("Bob Smith");
student.setSchool("Harvard University");
System.out.println("Name: " + student.getName()); // 输出: Name: Student: Bob Smith
System.out.println("School: " + student.getSchool()); // 输出: School: Harvard University
}
}
总结
Java 继承是面向对象编程中最为基本的概念之一。它可以使代码重用更加容易,同时也可以使程序更加易于维护和扩展。子类可以继承父类中的属性和方法,并可以重写父类中的方法或者添加新的方法和属性。使用 Java 继承可以提高代码的可复用性和可扩展性,同时也有利于实现多态性。