大家好,今天小编关注到一个比较有意思的话题,就是关于java语言继承类关系的问题,于是小编就整理了4个相关介绍Java语言继承类关系的解答,让一起看看吧。
- java继承和引包的区别?
- JAVA中类的继承有什么优点?
- 21. 在Java类的继承中,重写的方法的可以用private修饰符修饰吗?
- java为什么要设计interface,是为了尽可能替代类的继承吗?
JAVA继承和引包的区别?
j***a继承与引包的区别有以下几点:
1、继承使用的关键字是extends,而引包使用的关键字是import;
2、继承可以把父类的方法重写,改为想要的代码,而引包表示引入原本已经写好的程序,但是不能更改包内的内容;
3、一个j***a类只能继承一个父类,而一个j***a类可以引入多个不同的包;
要注意的是j***a中类的继承只能是单继承,不能是多继承。
J***A中类的继承有什么优点?
优点如下两点;
1、继承关系是传递的。若类C继承类B,类B继承类A,则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法。继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段;
2、继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系;继承提供了软件复用功能。这种做法能减小代码和数据的冗余度,大大增加程序的重用性;提供多重继承机制。出于安全性和可靠性的考虑,仅支持单重继承,而通过使用接口机制来实现多重继承。
基本说明:
1、与传统程序不同,Sun 公司在推出 J***a 之际就将其作为一种开放的技术。全球数以万计的 J***a 开发公司被要求所设计的 J***a软件必须相互兼容;
2、J***a平台是基于J***a语言的平台。这样的平台非常流行。因此微软公司推出了与之竞争的.NET平台以及模仿J***a的C#语言。j***a的应用已十分广泛。J***a是功能完善的通用程序设计语言,可以用来开发可靠的、要求严格的应用程序。80%以上的高端企业级应用都使用J***A平台。J***A是成熟的产品,已经有10年的历史。
21. 在J***a类的继承中,重写的方法的可以用private修饰符修饰吗?
关于j***a的继承,初学的时候,一直认为父类中private修饰的东西时无法被子类继承。观点:其实父类中的东西,除了构造方法之外,其它的全都是可以被继承的,包括私有的。但是由于private修饰的东西,只能在本类中可见。所以即便子类继承了,也是不可见的。
j***a为什么要设计interface,是为了尽可能替代类的继承吗?
inter face 类似于硬件USB !除非不对接,那么就无法编译顶多算是个文档记事本。
不过inter face 这个名称随便定义,不一定需要inter face ,只不过开方商建立的平台命名为inter face ,这些东西由策划者来决定,就好比我在地图里面随便画个圈叫什么这个由你决定,那么这个圈里面任意发挥,类似分区一样,你要跨过这个圈内部区域,你得通过海关认证,也可以说是跨省,那么整张内存叫做国家,inter fface 是省名,内部还有省府,市,县镇,乡等等分类,那么你所写程序只能在这个省内部操作,你要跨省就要***签字审核,叫做编译器,你才能正常跨省运送!
那么J***A 为何设计inter face 不就清楚了
继承代价太大,强制你把父类的所有东西都拿过来,不然就不准使用,这种将方法和属性强耦合的方式容易导致类继承多了到后面积重难返。使用鸭子类型(接口)能避免一部分继承的缺陷,go里甚至直接继承都没有了,只有接口。
以前我们把物体抽象,大象抽象是动物,动物抽象是生物,这样本身就把对象的内容和行为绑定了,比如大象会喷水,就给大象加个喷水的方法,但是如果鱼也会喷水,喷水这个方法又不能放到动物类里,那么基于大象和鱼的喷水方法实现的上层方法就无法复用,这两个喷水在编译器看来是没有任何关系的。
开始人们想到搞一个喷水动物类,继承动物类,大象和鱼再继承喷水动物类。但是这样终究治标不治本,再有其他的变化,继承链又要修改。
因为实际上我们使用对象,都是在使用其方法(属性其实也应该算方法)。
我对面向对象程序过程的理解,这个过程实际上就是让对象之间使用方法互发消息进行通信和动作,最终完成工作。
大家都知道的一句话,上层应该依赖抽象而不是依赖细节,然而依赖一个基类,本身已经依赖这个基类的实现细节,基类要求有个int成员,那么任何子类无论如何都需要有个int成员。那么理应将方法抽象出来,而不去关心其到底是什么,因为我们并不使用对象内部的内容,我们只使用方法。
比如有个iwriteable接口,表示对象可以按写入,那么上层的代码就不用管写的到底是什么了,只要能写就行,就可以基于这个iwriteable接口里的方法,写出例如写字符串,写图片等方法。任何实现了这个接口的类,都可以复用这些写字符串,写图片的代码。
那么就有人要问了,那如果我确实要求要有个int成员,因为我上层代码要使用呢?那么根据前面说的,属性也是方法,你应该再定义一个接口,比如这个int存的是年龄,那么就来个h***eage接口并实现它。调用的地方可以要求对象实现哪几个接口,这样也能获取需要的属性。
这么一来,连属性都没有了,那么继承也可以没有了,毕竟你要求的不是基类了,是一个或多个接口的组合了,所以你可以看到,接口替代继承是很自然的,而不是什么刻意而为的,是更[_a***_]抽象的体现。事实上基于自然规则的那套大象是动物,动物是生物的那套面向对象规则,在程序设计里并不好用。所以如果让我介绍面向对象,我不会讲这些例子。
到此,以上就是小编对于j***a语言继承类关系的问题就介绍到这了,希望介绍关于j***a语言继承类关系的4点解答对大家有用。