J***A语言同名,j***a同名方法

kodinid 18 0

大家好,今天小编关注到一个比较意思的话题,就是关于java语言同名的问题,于是小编就整理了3个相关介绍Java语言同名的解答,让我们一起看看吧。

  1. Java为什么不能继承多个父类?
  2. 程序员改代码规范
  3. Java为什么不支持多继承?

JAVA为不能继承多个父类?

这个问题,j***a之父曾经回答过,设计j***a语言的初衷就是要设计一门更加简单的语言,所以j***a的设计屏蔽了一些负载的东西,其中就包括指针和多继承。为什么说多继承复杂呢?这就要说一个多继承的菱形继承问题(又叫钻石继承)。

菱形继承(钻石继承)

JAVA语言同名,java同名方法-第1张图片-安济编程网
图片来源网络,侵删)

那么菱形继承有什么问题?

***浪费:移动电话继承了多份父类(硬件)的属性(getCreateTime()的引用);

二义性:移动电话的getId无法确定是返回imei还是mac地址

JAVA语言同名,java同名方法-第2张图片-安济编程网
(图片来源网络,侵删)

那么c++如何解决这个问题?有两种解决办法:

1. 通过域限定来访问,能够解决二义性问题,例如

移动电话 d = 移动电话()

JAVA语言同名,java同名方法-第3张图片-安济编程网
(图片来源网络,侵删)

J***a中支持单继承,多实现

如果支持多继承,那么指一个子类能同时继承于多个父类,从而同时拥有多个父类的特征,若子类继承的父类中拥有相同的成员变量,子类在引用该变量时将无法判别使用哪个父类的成员变量,因此多继承是存在争议的,是不能多继承的。

通俗点来将,一个人不可能是拥有多个父亲或母亲的。

程序员代码规范

代码书写规则通常对应用程序功能没有影响,但它们对于改善源代码的理解是有帮助的。养成良好的习惯对于软件开发和维护都是很有益的。

一篇编写规范的代码,不仅让自己维护起来更加方便,也会让其他读者觉得赏心悦目~快来看看如下10点

第一点:源代码文件以文件内容中的最顶层的J***a类命名,而且大小写敏感,文件扩展名为 .j***a,同时,文件的编码格式统一为UTF-8。

第二点:类的命名遵循大驼峰命名法UpperCamelCase,而方法名和变量名的命名遵循小驼峰命名法lowerCamelCase。常量名使用大写字母表示单词之间以下划线分隔.jsp的文件名全部小写

第三点:一个程序文件最好不要超过2000行。

第四点:不用的代码和引用删除.

第五点:请合理运用空行。空行可以用来隔开相对独立的代码块,有利于阅读和理解。但是不要使用超过一行的空行,对空间,别太奢侈了。

第六点:为不容易理解类变量注释。注释代码段,注释逻辑选择

第七点:对成员方法,不要轻易***用public的成员变量。主要的修饰符有public, private, protected。避免过多的参数列表,尽量控制在5个以内。

J***a为什么不支持多继承?

这是非常经典的问题,与为什么 String 在 J***a 中是不可变的很类似; 这两个问题之间的相似之处在于它们主要是由 J***a 创作者的设计决策使然。

为什么J***a不支持多重继承, 可以考虑以下两点:

第一个原因围绕钻石形继承问题产生的歧义,考虑一个类 A 有 foo() 方法, 然后 B 和 C 派生自 A, 并且有自己的 foo() 实现,现在 D 类使用多个继承派生自 B 和C,如果我们只引用 foo(), 编译器将无法决定它应该调用哪个 foo()。这也称为 Diamond 问题,因为这个继承方案的结构类似于菱形,见下图:

即使我们删除钻石的顶部 A 类并允许多重继承,我们也将看到这个问题含糊性的一面。如果你把这个理由告诉面试官,他会问为什么 C++ 可以支持多重继承而 J***a不行。嗯,在这种情况下,我会试着向他解释我下面给出的第二个原因,它不是因为技术难度, 而是更多的可维护和更清晰的设计是驱动因素, 虽然这只能由 J***a 言语设计师确认,我们只是推测。***链接有一些很好的解释,说明在使用多重继承时,由于钻石问题,不同的语言地址问题是如何产生的。

对我来说第二个也是更有说服力的理由是,多重继承确实使设计复杂化并在强制转换构造函数链接等[_a***_]中产生问题。***设你需要多重继承的情况并不多,简单起见,明智的决定是省略它。此外,J***a 可以通过使用接口支持单继承来避免这种歧义。由于接口只有方法声明而且没有提供任何实现,因此只有一个特定方法的实现,因此不会有任何歧义。

到此,以上就是小编对于J***A语言同名的问题就介绍到这了,希望介绍关于J***A语言同名的3点解答对大家有用。

标签: 继承 JAVA 问题