Java中多继承的实现
Posted 算法与编程之美
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中多继承的实现相关的知识,希望对你有一定的参考价值。
1 问题
Java是一种面向对象的只允许单继承的语言,那么怎样在Java中实现多继承呢?
2 方法
多层继承
如果要直接继承类,子类是不可以直接多继承的,但是可以通过多层继承来实现多继承,但多层继承一般不建议超过三次。接口
接口可用于继承也可用于其它,比较灵活。定义类实现接口,需要实现其所有父接口的方法。
多层继承: package weekbook; class A//父类A类 private int num=10; public int getNum() return this.num; public void fun() System.out.println("你今天天气真好!"); class B extends A//B类继承A类 private String name="张三"; public String getName() return this.name; public void fun()//方法覆写 System.out.println(this.getNum()); //父类私有域被继承但不可直接使用,需通过getter方法间接获得私有域的内容 //子类中没找到那么会去父类中寻找 class C extends B//C类继承B类,相当于间接继承A类 private String name="李四"; public String getName() return this.name; public void fun()//方法覆写(结果为覆写后的内容) System.out.println(this.getName()); System.out.println(this.name); public class Test public static void main(String[] args) A a=new A(); a.fun(); print(new B());//向上转型(优点在于子类可自动进行向上转型,可实现参数的统一) print(new C()); public static void print(A a) a.fun(); 接口: package weekbook; interface IA//父接口A(接口为更纯粹的抽象类,结构组成只含全局常量和抽象方法) void funA(); interface IB //父接口B(接口前添加I用以区分接口) void funB(); interface CImpl extends IA,IB//接口可继承多个父接口,用,分隔开即可,子接口的命名可选择较为重要的父接口进行命名或自行命名,一般子接口后添加Impl用以区分 void funC(); class Impl implements CImpl//定义类实现接口(也可直接实现父接口(多个)) public void funC()//抽象方法的实现 System.out.println("昨天吃串串!"); public void funA() System.out.println("今天吃火锅!"); public void funB() System.out.println("明天吃冒菜!"); public class Test1 public static void main(String[] args) Impl im=new Impl();//实例化对象 im.funA(); im.funB(); im.funC(); |
3 结语
针对如何实现多继承的问题,提出利用多层继承和接口的方法,通过实验,证明该方法是有效的,本文的每种方法都有各自的短处,多层继承一般不超过三层 。接口实现多继承时,一个Java接口加入一个新的方法时,所有实现这个接口的类都得编写具体的实现。在未来,我们可以探索利用成员内部类来实现多继承的方法。
以上是关于Java中多继承的实现的主要内容,如果未能解决你的问题,请参考以下文章