理解:继承可以理解为一个对象获取属性的过程。如果类A是类B的父类,而类B是类C的父类,我们也称C是A的子类,类C是从类A继承而来。 在java中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类。
关键字:extends和implements。
这两个关键字的使用决定了一个对象和另一个对象是否是IS-A(是一个)关系。
例:
// A.java public class A { private int i; protected int j; public void func() { } } // B.java public class B extends A { }
注意:上例说明B由A继承而来,B是A的子类。作为子类,B的实例拥有A所有的成员变量,但是对于private的成员B却没有访问权限,这保 证了A的封装性。
IS-A关系:一个对象是另一个对象的分类!我们通过使用instanceof 操作符,能够确定Mammal IS-A Animal。
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); System.out.println(cat instanceof Animal); System.out.println(pig instanceof Animal); } }
我们再来看下implements关键字是怎样使用来表示IS-A关系。
Implements关键字使用在类继承接口的情况下, 这种情况不能使用关键字extends。
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); System.out.println(d instanceof Animal); } }
Java只支持单继承(继承基本类和抽象类),但是我们可以用接口来实现(多继承接口来实现),脚本结构如:
public class Apple extends Fruit implements Fruit1, Fruit2{}
一般我们继承基本类和抽象类用extends关键字,实现接口类的继承用implements关键字。