让java的多重继承成为现实!

点击上方蓝色关注我们!

大家好,我是雄雄,前两天给大家说了说java中的四种内部类,推文分别为:

静态内部类和成员内部类

方法内部类和匿名内部类

在内部类的基础上,我们来看看今天的知识点儿。

众所周知,java类之间只可单继承,不可多继承,也就是一个类只能继承一个类,不可以继承多个类,那我们如果想“反其道而行之”呢?这不是危言耸听,因为我们确实有些情况下需要继承多个类,比如希望拥有两个类的行为功能,就很难使用单继承来解决问题了(当然,使用多个接口实现也是可以解决的)。

那,可不可以不利用接口的情况下实现多继承呢?当然是可以的,那就是——内部类!

下面我们来分析个例子:

假如有一个吃饭的类(Eat)和玩耍的类(Play),吃饭的类里面实现的是吃饭功能,而玩耍的类里面自然实现的是玩耍的功能。

现在新加了一个People类(人),该类想实现吃饭和玩耍的功能,如果使用继承的话,我们只能实现其中的某一功能,吃饭亦或玩耍,这满足不了我们的需求。

下面我们来举个例子,使用内部类,让java的多继承成为现实。

Eat类:

//吃饭的类
public class Eat {public void info (){System.out.println("正在吃饭");}}

Play类:

//玩耍的类
public class Play {public void info(){System.out.println("正在玩耍");}
}

People类:

public class People {//创建吃的 内部类public class EatIng extends Eat{}//创建玩的内部类public class PlayIng extends Play{}//实例化两个内部类的对象EatIng eatIng = new EatIng();PlayIng playIng = new PlayIng();//人正在吃饭public void peopleEat(){eatIng.info();}//人在玩耍public void peoplePlay(){playIng.info();}//main方法主体public static void main(String[] args) {People people = new People();people.peopleEat();people.peoplePlay();}}

其运行结果为:

代码分析:首先我们创建了Eat类和Play类,两类里面都有一个方法,吃饭和玩耍。然后就是People类,该类中,我们分别创建两个内部类,吃和玩。然后就是实例化两个内部类的对象,最后通过这两个对象即可实现我们想要实现的方法,你看看是不是就间接的实现了多继承了呢。这样虽说有点儿麻烦,不过需求还是达到了!

下期内容更精彩!

粉丝群

▲每天都会有不定额的红包发放,了解公众号文章、抽奖最新资讯。

java中,剩下的这两个内部类不太好理解!


java中常见的几种内部类,你会几个?(未完)


java中你知道的这四种代码块吗?


切记!构造函数里面别一定不要初始化其他类,踩过坑的都知道


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通俗理解决策树算法中信息增益的

转载自 通俗理解决策树算法中信息增益的 通俗理解决策树算法中的信息增益 在决策树算法的学习过程中,信息增益是特征选择的一个重要指标,它定义为一个特征能够为分类系统带来多少信息,带来的信息越多,说明该特征越重要&#x…

DDD理论学习系列(6)-- 实体

1.引言 实体对应的英语单词为Entity。提到实体,你可能立马就想到了代码中定义的实体类。在使用一些ORM框架时,比如Entity Framework,实体作为直接反映数据库表结构的对象,就更尤为重要。特别是当我们使用EF Code First时&#xf…

班级日常 | 一天一瞬间!

点击上方蓝色关注我们!欢迎来到今天的“一天一瞬间”专栏在学习word操作时,同学们的兴趣还是较高的,但是,比起“一天一个黑科技”来说,还是差了许多!前面两天都是学的一些简单的DOS命令,比如进某…

ASP.NET Core Web 资源打包与压缩

本文将介绍使用的打包和压缩的优点,以及如何在ASP.NET Core应用程序中使用这些功能。 概述 在ASP.Net中可以使用打包与压缩这两种技术来提高Web应用程序页面加载的性能。通过减少从服务器请求的次数和减少资源文件的体积来提高加载性能。 打包是一地将多个文件&a…

班级日常分享 | 一天一瞬间!

点击上方蓝色关注我们!介于最近同学们的学习劲头十足的样子,我和丁老师商量决定晚上不布置作业,看一部电影放松放松!昨晚下晚自习后,零零散散的还有一部分同学在教室里面学习,值班老师都催促多次&#xff0…

句法分析(syntactic parsing)在NLP领域的应用是怎样的

转载自 句法分析(syntactic parsing)在NLP领域的应用是怎样的 句法分析(syntactic parsing)在NLP领域的应用是怎样的? 文章整理自郭江师兄问题回答(被收录于知乎编辑推荐)!已取得…

新的学期、新的开始、新的付出、新的收获!

点击上方蓝色关注我们!本文原创:王晓丹同学初次,我漫步在静静的校园,深情的黄昏,显得格外惹人喜爱。哇!那是什么?我情不自禁的喊了出来,一颗石榴树 ,引起了我满满的回忆&…

ASP.NET Core Web API 最小化项目

ASP.NET Core中默认的ASP.NET Core 模板中有Web API 模板可以创建Web API项目。 有时,只需要创建一个API,不需要关心Razor,本地化或XML序列化。通过删除无用的NuGet软件包和代码,可以提高 API 的加载时间并减少部署包大小。 新建…

LinkedHashSet VS HashSet

LinkedHashSet的使用 LinkedHashSet作为HashSet的子类,在添加数据的同时,每个数据还维护了两个引用,记录此数据前一个 数据和后一个数据。 优点:对于频繁的遍历操作,LinkedHashSet效率高于HashSet

隐马尔科夫模型-基本模型与三个基本问题

转载自 隐马尔科夫模型-基本模型与三个基本问题 隐马尔科夫模型-基本模型与三个基本问题 这次学习会讲了隐马尔科夫链,这是一个特别常见的模型,在自然语言处理中的应用也非常多。 常见的应用比如分词,词性标注,命名实体识别等…

日常技术分享 : 一定要注意replcaceAll方法,有时候会如你所不愿!

点击上方蓝色关注我们!今天,踩过了一个雷,特此整理了一下,以防大家也被中招!事情是这样的,在做一个项目时,需要用到String类的replcaceAll方法,可以这么说,该方法就是替换…

在微服务中如何管理数据

来自Stitch Fix团队的工程副总裁Randy Shoup在QCon纽约2017会议上讨论了如何在基于微服务的应用中管理数据和隔离持久化。他还介绍了将事件(Event)作为微服务的第一类构造。他介绍自己的团队将机器学习技术应用到了业务的各个组成部分,比如购…

jozj3419-最大利润【树形dp】

前言 树形dp是前天学的,题目也是前天做的,可博客却是今天发的。 正题 题目大意 一棵树一样的火车站,每个站点有不同的利润,不能连续选择相连的两个站点的利润,求最大利润。 输入输出(建议无视&#xf…

隐马尔科夫模型-前向算法

转载自 隐马尔科夫模型-前向算法 隐马尔科夫模型-前向算法 在该篇文章中讲了隐马尔科夫模型(HMM)一基本模型与三个基本问题 隐马尔科夫模型-基本模型与三个基本问题,这篇文章总结一下隐马尔科夫链(HMM)中的前向与后…

线段树初见——区间询问与改变最大值

前言 昨天某B组讲主席树,然后就作死的去听了,也没听懂(因为连线段树都不懂),然后好奇心就去问了一下老师线段树是个蛤,然后这篇博客就诞生了。 正题 首先线段树就是一个可以快速区间改变和询问的东东&am…

关系数据库理论

依赖 候选码 三大范式 公理系统 求最小函数的依赖集 例 解 模式分解

19级:班级日常分享 | 一天一瞬间

点击上方蓝色关注我们!昨天没有看到他们早读,有点失落。今天再一次去教室,还未走到门口呢,就听见教室里面的早读生透过门缝传出,甚是开心。在陪他们早读的时候,自己顺便读了几篇散文和古诗古文,…

在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序

前言 Visual Studio 2017已经发布了很久了。做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧。 随着Google Angular4的发布。我一直在想,怎么能够用这个地表最强IDE工具编写Angular4的Asp.Net Core项目。经过不懈的研究。终…

机器学习中向量化编程总结记录

转载自 机器学习中向量化编程总结记录 向量化编程总结记录 很多时候,我们在实现算法的时候,总会碰到累和的伪代码: 比如下面这个: 为了简单我这里只重复5次,但是原理是一样的。 很显然我们要得到这个结果&#xf…