1.在c++中有继承和多重继承,而java中只有单继承。继承的好处在于可以复用一些东西,但缺陷在于后续不好扩展。此外,可读性方面继承也不好。

2.java中多了一个接口的概念,而接口的功能和其名字表达的一样,就是在说这是一个接口,传什么参数,实现什么功能,返回什么结果。至于怎么实现,那就是具体的类的事情了。

3.继承和接口的区别:继承可以写一个完整的方法,而接口只是一个方法声明而已。  如果复用的代码除了方法声明还有方法体,那继承比较合适。  如果只是方法声明一样,具体的实现方法各自不同,那接口比较合适。

4.如果想复用一段代码,继承比接口合适,但继承的扩展性和可读性又比较差。可以使用组合,将这些公共方法写到一个类中,然后将该类作为一个成员变量来使用。这样就达到了复用的目的,可读性和可扩展性也得到了提升。

5.由此反观编程的几个原则:(根据记忆写的,具体的不清楚了,可能有出入,原则有多条,这里只写相关的两条)

1)针对接口编程;针对抽象编程;

2)优先使用组合而不是继承。

所以从编程原则上看,如何以及何时使用继承、接口、组合,就已经有了答案。

6.不管是C++还是java,都是面向对象的。只要是面向对象的语言,其特点就离不开抽象、封装、继承、多态。在编程时,要按照编程原则来进行尽可能的优化编程(前提保证功能正确,性能达标),但这些知识点必须全面理解,避免别人写的代码自己看不懂。

总结:要时刻提醒自己,针对接口编程,多用组合,少用继承。

对java中继承、接口、组合的思考的更多相关文章

  1. java 中继承,组合,重载,重写的实现原理 (转)

    我们知道,继承,组合,重载,重写是java语言的面向对象实现的基本特征. 那么在java内部,究竟是如何实现这些面对对象的基本特征的呢? 继承和组合是面向对象中代码复用的主要实现方式,他们可以达到类似 ...

  2. java中继承和组合的区别

    子类继承父类,父类的所有属性和方法都可以被子类访问和调用.组合是指将已存在的类型作为一个新建类的成员变量类型,又叫"对象持有". 通过组合和继承,都可以实现系统功能的重用和代码的复 ...

  3. 新秀翻译(一个)——Java在继承和组合

    阅读英文的程序猿的能力,这是非常重要的.过去的几年中一直在学习英语,今天心血来潮,在网上找什么鲍文简要翻译. 普通级,能力有限,看官还请大家多多指点. 译文: 本文将会举例说明Java中继承和组合的概 ...

  4. 第五节:详细讲解Java中的接口与继承

    前言 大家好,给大家带来详细讲解Java中的接口与继承的概述,希望你们喜欢 什么是接口(interface) 接口中的方法都是抽象方法,public权限,全是抽象函数,不能生成对象 interface ...

  5. java中List接口的实现类 ArrayList,LinkedList,Vector 的区别 list实现类源码分析

    java面试中经常被问到list常用的类以及内部实现机制,平时开发也经常用到list集合类,因此做一个源码级别的分析和比较之间的差异. 首先看一下List接口的的继承关系: list接口继承Colle ...

  6. java中继承thread类的其他类的start()方法与run()方法

    java中继承thread或者实现runnable接口的类必须重写run()方法. 如果其执行了start()方法,其实就是启动了线程的run()方法. 注意:如果是实现runnable接口的类是没有 ...

  7. Java学习笔记二十八:Java中的接口

    Java中的接口 一:Java的接口: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承 ...

  8. Java中继承,类的高级概念的知识点

    1. 继承含义 在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承(inheritance). 2. 继承的优点 A.代码的可重用性 B.子类可以扩 ...

  9. Java 中的接口有什么作用?以及接口和其实现类的关系?

    Java 中的接口有什么作用? - Ivony的回答 - 知乎 https://www.zhihu.com/question/20111251/answer/16585393 这是一个初学者非常常见的 ...

  10. JAVA中限制接口流量、并发的方法

    JAVA中限制接口流量可以通过Guava的RateLimiter类或者JDK自带的Semaphore类来实现,两者有点类似,但是也有区别,要根据实际情况使用.简单来说, RateLimiter类是控制 ...

随机推荐

  1. C# 钱数 小写 转 大写

    public class Rmb { /// <summary> /// 转换人民币大小金额 /// </summary> /// <param name="n ...

  2. HDU 5234 Happy birthday 01背包

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5234 bc:http://bestcoder.hdu.edu.cn/contests/con ...

  3. IIS 7.0 的 ASP.NET 应用程序生命周期概述

    文章:IIS 7.0 的 ASP.NET 应用程序生命周期概述 地址:https://msdn.microsoft.com/zh-cn/library/bb470252(v=vs.100).aspx ...

  4. React-native APK打包

    安卓相关工具配置到环境变量,这样可以将安卓相关工具可以直接在cmd命令中调用 1 检查gradle版本 查看里面对应的编译工具版本号,如果提示版本不对你,那么直接去更新android sdk,相关的s ...

  5. 5th 各组作品alpha发布体会

    1.  俄罗斯方块   武志远 可以进行游戏,界面很友好,游戏运行也很流畅,并找到两名同学现场体验,游戏完成度很好. 2.  连连看游戏  张金生 可以进行游戏,实现了背景音乐播放等附加功能,界面清晰 ...

  6. webgl 初识2

    之前的文章介绍了webgl. 这里进一步精简. WebGL的全部内容就是创建不同的着色器, 向着色器提供数据然后调用gl.drawArrays 或 gl.drawElements 让WebGL调用当前 ...

  7. v-for & duplicate key bug

    v-for & duplicate key bug vue warn & v-for & duplicate key bug <span class="audi ...

  8. php 随机密码和盐 来自wordpress

    生成随机密码或盐. Generate keys and salts using secure CSPRNG $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJ ...

  9. 第203天:js---Array对象常用方法

    1.shift:删除原数组的第一项,返回删除元素的值:如果数组为空则返回undefined //shift:删除原数组的第一项,返回删除元素的值:如果数组为空则返回undefined var arr ...

  10. Asp.net MVC 获取IPv4 地址

    public static string GetIP4Address() { string IP4Address = String.Empty; foreach (IPAddress IPA in D ...