Java复习笔记(五)-----实现多重继承
来源:互联网 发布:kylie jenner 知乎 编辑:程序博客网 时间:2024/05/18 16:54
实现多重继承
多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,只允许单继承。但在实际情况中,有时候会用得到多重继承,比如遗传,我们既继承了父亲的行为特征,也继承了母亲的行为特征。这种情况下,如果想要实现多重继承的话,Java为我们提供了两种方式,曲折的来实现多重继承。
接口
一个类只能继承一个父类,但却可以实现多个接口,这就为我们实现多重继承做了铺垫。
对于接口而言,有时候它表现的更像是一个纯粹的抽象类。
interface CanFight { void fight();}interface CanSwim { void swim();}interface CanFly { void fly();}public class ActionCharacter { public void fight(){ }}public class Hero extends ActionCharacter implements CanFight,CanFly,CanSwim{ public void fly() { } public void swim() { } /** * 对于fight()方法,继承父类的,所以不需要显示声明 */}
内部类
上面使用接口实现多重继承是一种普遍可行的方式,但是如果父类为抽象类或者具体类,那么我们就只能通过内部类来实现多重继承了。如何利用内部类实现多重继承,请看下面实例:儿子是如何利用多重继承来继承父亲和母亲的优良基因。
首先是父亲Father和母亲Mother:
public class Father { public int strong(){ return 9; }}public class Mother { public int kind(){ return 8; }}
重头戏在这里,儿子类Son:
public class Son { /** * 内部类继承Father类 */ class Father_1 extends Father{ public int strong(){ return super.strong() + 1; } } class Mother_1 extends Mother{ public int kind(){ return super.kind() - 2; } } public int getStrong(){ return new Father_1().strong(); } public int getKind(){ return new Mother_1().kind(); }}
测试程序:
public class Test1 { public static void main(String[] args) { Son son = new Son(); System.out.println("Son 的Strong:" + son.getStrong()); System.out.println("Son 的kind:" + son.getKind()); }}----------------------------------------Output:Son 的Strong:10Son 的kind:6
儿子继承了父亲,变得比父亲更加强壮,同时也继承了母亲,只不过温柔指数下降了。这里定义了两个内部类,他们分别继承父亲Father类、母亲类Mother类,且都可以非常自然地获取各自父类的行为,这是内部类一个重要的特性:内部类可以继承一个与外部类无关的类,保证了内部类的独立性,正是基于这一点,多重继承才会成为可能。
阅读全文
0 0
- Java复习笔记(五)-----实现多重继承
- java实现多重继承
- java 实现多重继承
- java实现多重继承
- java实现多重继承
- JAVA实现多重继承
- [Java] java实现多重继承
- JAVA基础笔记(复习)- 继承
- JAVA复习笔记--------类(三)继承
- Java中实现多重继承
- Java实现多重继承技巧
- JAVA复习笔记--------类(五)多态
- [Java]复习笔记(五)--数据类型
- java提高篇(八)-----实现多重继承
- java提高篇(八)-----实现多重继承
- java提高篇(八)-----实现多重继承
- Java提高篇(八):实现多重继承
- java提高篇(八)-----实现多重继承
- windows下tensorflow两种加载模型的测试数据方法
- 利用Easy UI生成异步树以及动态添加标签页
- tensorflow版本的一些区别
- Android多线程AsyncTask入门讲解
- Retroit+rxjava2.0+mvp封装
- Java复习笔记(五)-----实现多重继承
- 转----FPGA做MAC功能,直接挂PHY芯片发送网络报文
- Java高性能缓冲设计 vs Disruptor vs LinkedBlockingQueue
- ioi2000 回文词
- C语言中定义结构体的几种方法
- 前端工程师必备实用网站
- redis
- 647. Palindromic Substrings
- 巡检管理系统