Java中的继承是一种允许一个类继承另一个类的方法,继承可以使子类拥有父类的方法和属性。以下是如何声明和使用Java中的继承,包括实例解析与技巧分享。
## 声明继承
在Java中,继承使用`extends`关键字来声明。子类通过继承父类可以访问父类的公共(public)和保护(protected)成员变量和方法。下面是一个简单的继承例子:
```java
// 父类
class Parent {
public int parentProperty;
protected void parentMethod() {
System.out.println("This is a method from Parent class");
}
}
// 子类
class Child extends Parent {
public int childProperty;
@Override
protected void parentMethod() {
super.parentMethod();
System.out.println("This is an overridden method from Child class");
}
}
在上面的例子中,Child类继承了Parent类,它拥有了Parent类中的parentProperty变量和parentMethod()方法。
实例解析
让我们通过一个更具体的例子来理解继承:
class Employee {
private String name;
private double salary;
public Employee(String name, double salary) {
this.name = name;
this.salary = salary;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public void displayEmployee() {
System.out.println("Employee Name: " + getName() + ", Salary: " + getSalary());
}
}
class Manager extends Employee {
private double bonus;
public Manager(String name, double salary, double bonus) {
super(name, salary);
this.bonus = bonus;
}
public double getBonus() {
return bonus;
}
@Override
public void displayEmployee() {
super.displayEmployee();
System.out.println("Manager Bonus: " + bonus);
}
}
public class Main {
public static void main(String[] args) {
Employee emp = new Employee("John", 5000);
Manager mgr = new Manager("Alice", 7000, 2000);
emp.displayEmployee();
System.out.println();
mgr.displayEmployee();
}
}
在这个例子中,Manager类继承了Employee类。Manager不仅继承了Employee类的name和salary属性以及相关的方法,还增加了一个bonus属性和一个重写后的displayEmployee()方法。
技巧分享
使用
super()关键字:super()用于调用父类的构造函数。如果不使用super(),Java编译器会自动调用父类的不带参数的构造函数。方法重写:子类可以使用
@Override注解来标示一个方法覆盖了父类中的方法。这是一个很好的编程实践,它可以帮助你清楚地识别出哪些方法是子类自己实现的。避免过多的继承层次:尽管继承是一种强大的特性,但是过度使用继承可能导致代码的复杂性增加,因此应当谨慎使用。
使用接口:如果你希望不同的类能够有相同的接口,但又不想通过继承来复用代码,你可以使用Java的接口。
保护变量和方法:当你的类被继承时,你可能不希望所有成员都被子类修改。使用
protected关键字可以保护成员变量和方法,让它们只对继承类及其子类可见。
继承是Java中非常基础且强大的一个特性,理解并正确使用它可以帮助你编写更干净、更易于维护的代码。
