繼承是指子類獲取父類屬性與行為的過程。若類 A 是類 B 父類,B 是類 C 父類,則 C 間接繼承 A。Java 採用單一繼承:一個子類只能有一個直接父類。
兩者決定類之間的 IS-A(是一個)關係:
extends:繼承類(含抽象類)implements:實現接口// A.java
public class A {
private int i;
protected int j;
public void func() { }
}
// B.java
public class B extends A { }
子類 B 擁有父類 A 所有成員,但 private 成員不可直接訪問,保證封裝性。
class Animal { }
class Dog extends Animal { }
class Cat extends Animal { }
class Pig extends Animal { }
public class AnimalTest {
public static void main(String[] args) {
Dog dog = new Dog();
Cat cat = new Cat();
Pig pig = new Pig();
System.out.println(dog instanceof Animal); // true
System.out.println(cat instanceof Animal); // true
System.out.println(pig instanceof Animal); // true
}
}
interface Animal { }
class Mammal implements Animal { }
class Dog implements Animal { }
public class AnimalTestTwo {
public static void main(String[] args) {
Mammal m = new Mammal();
Dog d = new Dog();
System.out.println(m instanceof Animal); // true
System.out.println(d instanceof Animal); // true
}
}
Java 不支持多重類繼承,但可通過實現多個接口達到類似效果:
public class Apple extends Fruit implements Fruit1, Fruit2 { }
慣例:extends 用於類/抽象類,implements 用於接口。