首先我们从C++说起, c++可以多继承。也就是一个类型 --- class,可以继承自2个以上的父类型。多继承导致一个问题,很多人知道。例如,如果类型B,类型C均继承自类型A。然后类型D继承自类型B和C。那么构造D的实例的时候,由于要调用父类型的构造方法,最终会调用两次A的构造方法。结果类型D的实例有两套祖父的数据,也就是外公和爷爷长的一模一样,以后使用的时候很麻烦。每次D要和祖父打交道,都要额外的区分到底是外公还是爷爷。 再说,内存里面出现两套一模一样的东西,一个用不上,还容易引起混乱,岂不是浪费,又麻烦。
所以,java就通过严格的单一继承规则解决了这个问题。.net当然也一样,单一集成是一个定律。那么有:
所有的类型 --- 只能继承自单一的类型;
其次,大家知道,从一个class派生的必然是另一个class。Object是一个class,如果interface继承自Object,那么interface必然是一个class。那么,如果一个类型实现了一个interface,再有一个基类class, 那么它们的根源都是Object, 也即是这个类的实例也像c++一样,存在上述的问题。 因此接口肯定不是继承自Object,否则就违反了单一继承的定律。
Set<String> result = new HashSet<String>();
for (Method m : Set.class.getMethods())
result.add(m.getName());
System.out.println(result);
打印结果为:[iterator, toArray, addAll, remove, equals, containsAll, hashCode, contains, add, size, clear, isEmpty, retainAll, removeAll]
确实不包含Object中的public类型方法,也证明了上述推断。
分享到:
相关推荐
在这个“java-面向对象的英雄类”主题中,我们将深入探讨Java中的面向对象编程,特别是继承的概念,这是Java OOP的三大特性(封装、继承和多态)之一。 面向对象编程的基本理念是将现实世界中的实体抽象为类,类是...
Java中的`Object`类是所有Java类的根类,无论是用户自定义的还是Java标准库中的类,它们最终都会继承自`Object`。这个类包含了所有对象通用的基本方法,例如`equals()`、`hashCode()`、`toString()`以及`clone()`等...
在这个例子中,Dog类继承了Animal类,意味着Dog类自动拥有Animal类的所有属性和方法。 Java也支持接口,它是一系列方法的声明,但没有实现。任何类如果要使用接口,就必须提供接口中方法的具体实现。接口在Java中...
在深入探讨“接口与Object类”这一主题之前,我们首先明确两个核心概念——接口(interface)与抽象类(abstract class),以及它们与Java基础类库中不可或缺的Object类之间的关系。 ### 接口与抽象类 #### 接口...
* Object类:Java语言中的根类,提供了基本的对象操作方法。 * Math数学类:提供了数学函数和常量。 * Comparable可比较接口:定义了对象的比较方法。 * 基本数据类型的包装类:例如Integer、Double、Boolean等,...
- Java中类不能有多个直接父类,A错误,其他选项正确。 8. **继承表示**: - 表示N继承自M的语句是`class N extends M`,D正确。 9. **实现接口**: - 类A实现接口B的语句是`class A implements B`,A正确。 ...
在Java编程语言中,接口、类和对象是核心概念,对于理解和构建复杂的软件系统至关重要。让我们深入探讨这些主题。 1. 接口(Interface): Java中的接口是一种完全抽象的类型,它定义了一组方法的签名,但不包含...
它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。 另外,在Java面试中,Anonymous Inner Class(匿名内部类)也是一个重要的知识点。匿名内部类是...
面向对象编程(Object-Oriented Programming,OOP)的概念包括封装、继承和多态,这些概念在Java中得到了充分的体现。本篇文章将深入探讨Java中的继承这一关键概念。 首先,面向对象的继承是建立在类的基础上的。在...
在Java编程语言中,继承是面向对象特性的一个关键概念,它允许一个类(子类或派生类)从另一个类(父类或基类)继承属性和行为。在这个"实例6继承"的压缩包文件中,我们可以期待找到一系列关于Java继承的示例代码和...
比如`java.lang.Object`是所有类的基类,而`java.util.ArrayList`是常用的动态数组实现。 - 接口定义了一组方法的签名,用于实现多继承。例如,`java.io.Serializable`是标记接口,表明一个类可以被序列化。 3. **...
ArcObject 10.3.1 For Java 对象模型(ODM)是Esri的ArcGIS平台中的核心组件集合,适用于ArcGIS Engine、ArcGIS Desktop插件以及ArcGIS Server服务扩展(SOE)的开发。这个对象模型图详细定义了不同类之间的关系,...
在Java中,一个类可以实现多个接口,但只能继承一个父类(除了Object类,它是所有类的最终父类)。 继承是类之间的“is-a”关系,允许一个类(子类)继承另一个类(父类)的属性和方法。子类可以重写父类的方法,以...
`Object`类是所有Java类的基类,也就是说所有的类都直接或间接地继承自`Object`。因此,`Object`类中定义的方法可以在所有类中使用。 - **Object类常用方法** - `public boolean equals(Object obj)`:比较两个...
在这个例子中,`MyClass`是公共类,它继承了`ParentClass`并实现了`Interface1`和``Interface2`。类体中可以定义字段(变量)和方法。 内部类(Inner Class)是Java中一个高级特性,它允许在一个类的内部定义另一个...
- `java.lang.Object`是所有Java类的顶级父类,无论显式与否,每个类都直接或间接继承自这个类。 2. **子类的创建**: - 使用`extends`关键字创建子类。例如,`class SubClass extends SuperClass {}`声明了...
1. **Java Native Interface (JNI)**:ObjectScript可能通过JNI直接调用Java的本地方法,实现对Java库的深度集成。 2. **Java Reflection API**:ObjectScript可能利用反射机制动态地创建对象、访问成员变量和调用...
在Java编程语言中,面向对象(Object-Oriented Programming,OOP)是核心特性之一,它使得代码结构清晰,易于维护。本教程将深入探讨Java中的抽象类和接口,这两种都是实现多态性和抽象化的关键工具。理解并熟练运用...
Java是一种面向对象的编程语言,它的核心概念包括类(Class)、对象(Object)和接口(Interface)。在这次实验中,我们将深入理解这三个概念,并通过实际的代码示例来加深理解。 1. 类(Class): 类是Java中的...
在 Java 中,继承是指一个类继承另一个类的成员变量和方法。例如,`Person` 类继承了 `Object` 类的成员变量和方法。在继承关系中,子类可以继承父类的成员变量和方法,并可以override 父类的方法。 Java 中的 ...