继承的主要目的就是为了重用父类的属性或者方法,而不需要重新重复定义。
众所周知,Java 语言是不支持多重继承的。但是还是可以通过其他的方法间接地实现多重继承,下面重点介绍两种方法:
在 Java 语言中,虽然不允许一个类继承多个类,但是允许一个类实现多个接口,因此可以通过实现多个接口的方法间接地实现多重继承的功能,Java 代码如下所示:
- interface CanFly {
- public void fly();
- }
-
- interface CanRun {
- public void run();
- }
-
- class Animal {
- public void getCatagory() {
- System.out.println("I'm animal");
- }
- }
-
- class Duck extends Animal implements CanFly, CanRun {
-
- public void fly() {
- System.out.println("I can fly");
- }
-
- public void run() {
- System.out.println("I can run");
- }
- }
-
- public class Test {
-
- public static void main(String[] args) {
-
- Duck d = new Duck();
- d.getCatagory();
- d.fly();
- d.run();
- }
- }
在一个类中定义一些内部的类,让这些内部类继承自不同的父类,这样可以通过这些内部类来访问不同类的方法,从本质上讲,这种方法更像是组合,而不是继承。但是因为它有着继承的特点(可以重用多个类的方法与属性),因此这种方法也可以被看成是一种可以间接地实现多重继承的方法,Java 代码如下所示:
- class Memory {
-
- public void m() {
- System.out.println("Memory");
- }
- }
- class CPU {
-
- public void c() {
- System.out.println("CPU");
- }
- }
-
- class Computer {
-
- class Memory1 extends Memory {}
- class CPU1 extends CPU {}
- public void m() {
- new Memory1().m();
- }
- public void c() {
- new CPU1().c();
- }
- }
-
- public class Test {
-
- public static void main(String[] args) {
- Computer c = new Computer();
- c.m();
- c.c();
- }
- }