J***A语言的继承关系是单重的,j***a语言间的继承关系是
dfnjsfkhak
2024-03-16
47
大家 好,今天小编关注到一个 比较 有意思 的话题,就是 关于java 语言 的继承 关系是单重的的问题 ,于是小编就整理了2个相关 介绍 JAVA 语言的继承关系是单重的的解答,让我们 一起看看吧。
c+语言支持单重继承和双重继承吗? java为什么要设计interface,是为了尽可能替代类的继承吗? c+语言支持 单重继承和双重继承吗? C++ 语言同时支持单一继承和多重继承。单一继承是指派生类只从一个基类继承而来;相应的,多重继承指派生类同时从两个 或更多的基类继承而来
支持多重继承,这样的话可以 在高级 类里面继承更多的功能 ,但也导致程序 的可读性变差。只要遵循低耦合高内聚设计 程序,那程序的质量和可维护 性都会比较高,无需一味的追求精简代码 行数
j***a为什么 要设计int erface,是为了尽可能 替代类的继承吗? 接口 定义 的属于规范 ,比如说,打印 这一个动作 ,不同 的打印机有不同的打印方式和指令 ,如果 没有 规范,很难做到一种代码统一打印,如果有接口和规范就能做到兼容多家打印机。USB接口,220v电源接口,就是一种规范,有了这些规范,设备 方,供电方就有了一套来约束自己 ,达到工程 学上的通用,接口是工程学上一个很好的思想
inter face 类似于硬件 USB !除非不对接通讯,那么 就无法编译 顶多算是个文档 记事本。
不过inter face 这个 名称随便定义,不一定需要 inter face ,只不过开方商建立的平台命名 为inter face ,这些东西由策划者来决定,就好比我在地图 里面随便画个圈叫什么这个由你决定,那么这个圈里面任意发挥,类似分区一样,你要跨过这个圈内部区域 ,你得通过 海关认证 ,也可以说是跨省,那么整张叫做国家,inter fface 是省名,内部还有省府,市,县镇,乡等等分类 ,那么你所写程序只能在这个省内部操作 ,你要跨省就要***签字审核,叫做编译器 ,你才能正常跨省运送!
那么J***A 为何设计inter face 不就清楚了
首先多种不同的类实现 了同样的方法,一定程度上弥补了j***a单重继承的不足。
其次设计与实现相分离,设计人员编写 接口,程序人员实现接口。这样代码看起来更加规范,在架构 上更加合理。
最后接口的最主要 的作用是达到访问统一。
interface是接口的意思。接口意味着一种契约,相对于类而言接口的抽象程度更高。接口更多的是抽象出统一的行为,是约定;而类的继承是复用,两者的功能和定位 有区别,是互补的。
接口定义了某些行为,而实现某个接口就必须实现这些行为。换句话说,某个类实现了接口,就必定具备接口所约定的功能。这样的话,我们就可以***用面向 接口编程 的方式进行 设计。我们看不到具体的类的实现,也不需要看到。我们只需要看到接口就可以了,然后 就可以根据接口所提供 的功能进行调用 。
更具体的推荐 看下j***a 编程思想。
继承代价太大,强制你把父类的所有东西都拿过来,不然就不准使用 ,这种将方法和属性强耦合的方式容易导致类继承多了到后面积 重难返。使用鸭子类型 (接口)能避免一部分继承的缺陷,go里甚至直接继承都没有了,只有接口。
以前我们把物体抽象,大象抽象是动物,动物抽象是生物,这样本身就把对象 的内容 和行为绑定了,比如大象会喷水,就给大象加个喷水的方法,但是如果鱼也会喷水,喷水这个方法又不能放到动物类里,那么基于大象和鱼的喷水方法实现的上层方法就无法复用,这两个喷水在编译器看来是没有任何关系的。
开始人们想到搞一个喷水动物类,继承动物类,大象和鱼再继承喷水动物类。但是这样终究治标不治本,再有其他的变化,继承链又要修改 。
因为实际上我们使用对象,都是在使用其方法(属性其实也应该算方法)。
我对面向对象程序过程 的理解,这个过程实际上就是让对象之间使用方法互发消息进行通信和动作,最终完成工作 。
大家都知道的一句话,上层应该依赖抽象而不是依赖细节,然而依赖一个基类,本身已经依赖这个基类的实现细节,基类要求 有个int成员 ,那么任何子类无论如何都需要有个int成员。那么理应将方法抽象出来,而不去关心其到底是什么,因为我们并不使用对象内部的内容,我们只使用方法。
比如有个iwriteable接口,表示 对象可以按字节 写入 ,那么上层的代码就不用管写的到底是什么了,只要能写就行,就可以基于这个iwriteable接口里的方法,写出例如写字符串 ,写图片等方法。任何实现了这个接口的类,都可以复用这些写字符 串,写图片的代码。
那么就有人要问了,那如果我确实要求要有个int成员,因为我上层代码要使用呢?那么根据前面说的,属性也是方法,你应该再定义一个接口,比如这个int存的是年龄,那么就来个h***eage接口并实现它。调用的地方可以要求对象实现哪几个接口,这样也能获取需要的属性。
这么一来,连属性都没有了,那么继承也可以没有了,毕竟你要求的不是基类了,是一个或多个接口的组合了,所以你可以看到,接口替代继承是很自然的,而不是什么刻意而为的,是更高级抽象的体现。事实上基于自然规则的那套大象是动物,动物是生物的那套面向对象规则,在程序设计 里并不好用 。所以如果让我介绍面向对象,我不会讲这些例子。
到此,以上就是小编对于J***A语言的继承关系是单重的的问题就介绍到这了,希望介绍关于J***A语言的继承关系是单重的的2点解答对大家有用 。
标签: 继承
接口
那么
版权声明: 本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。