今天,我的一个同事突然间问我一个问题:“如果有一个类,实现了多个接口,这些接口里面有形同的方法,会出现什么情况?”。我感觉这个问题挺有意思(薄弱的java基础啊!),于是简单的写了几个接口和类,看看会有什么情况发生;
第一个接口的内容:
public interface Angel {
public abstract void say();
public abstract void work();
}
第二个接口的内容:
public interface Devil {
public abstract void say();
public abstract void work();
}
实现接口的类的内容:
public class People implements Angel, Devil {
public void say() {
System.out.println("我实现了谁的say()方法??");
}
public void work() {
System.out.println("我实现了谁的work()方法??");
}
}
main()方法的内容:
public static void main(String[] args) {
try {
Angel angel = new People();
angel.say();
angel.work();
Devil devil = new People();
devil.say();
devil.work();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
打印出的结果:
我实现了谁的say()方法??
我实现了谁的work()方法??
我实现了谁的say()方法??
我实现了谁的work()方法??
注:在People这个类中,按住alt键,点击say()方法或者work()方法,都无法定位到接口中。
分享到:
相关推荐
4. **接口与继承**:虽然VB6.0不支持多重继承(一个类只能继承一个基类),但它可以通过实现多个接口来模拟多继承的效果,从而获得多个类的功能。 5. **接口的用途**:接口常用于定义规范,确保类遵循特定的行为...
同时,如果一个类实现了两个具有相同签名的默认方法,需要在该类中重写这个方法以解决冲突。 在`InterfaceExercise`中,我们可能会遇到接口之间的继承。一个接口可以继承另一个接口,并添加新的方法或者修改已有的...
3. **接口分离原则**:如果一个接口包含多个功能,考虑将其拆分为更小、更具体的接口,这样可以降低类之间的耦合度。 4. **实现细节**:在实现接口成员时,注意不要引入不必要的复杂性。尽可能保持简洁。 通过以上...
4. **接口与多态性**:通过接口,不同类可以具有相同的接口,这使得可以使用接口类型的引用指向实现该接口的任何类的对象,从而实现多态性。例如,可以定义一个方法`void interactWithMonster(Monster m)`,即使怪物...
接口的设计主要用于定义行为规范或“契约”,多个类可以通过实现同一个接口来共享相同的行为特征,这是实现多态性的另一种方式。 #### 语法与特性 接口的定义使用`interface`关键字,例如: ```java interface ...
一个类只能继承一个抽象类,但可以实现多个接口。 3. 默认方法:Java 8引入了默认方法,允许在接口中提供默认的实现。这使得接口可以为实现类提供一些基础实现,同时保留多态性。 总的来说,接口的多态实现是提高...
- 一个类可以实现多个接口,支持多重继承的概念。 - 接口中的方法默认是没有实现的,但自Java 8起,接口可以包含默认方法和静态方法。 **应用场景**: - 当需要定义一组行为规范,但不确定谁会实现这些规范时,可以...
- **接口**提供了一种规范,强制类实现指定的方法,一个类可以实现多个接口,实现多继承。 - **多态**允许更灵活的代码编写,提高了程序的扩展性和适应性,可以在不关心具体类型的情况下处理对象。 在实际开发中,...
- **接口**:一个类可以实现多个接口。 2. **成员变量**: - **抽象类**:可以拥有私有、受保护、公共的实例变量。 - **接口**:只能拥有公共静态常量,即默认修饰符为`public static final`。 3. **方法定义**...
3. **类与类之间不能多继承,但一个类可以实现多个接口,从而获得多继承的效果。** #### 四、继承关系与实现关系 - **抽象类可以继承抽象类**:这体现了类与类之间的继承关系,一个抽象类可以从另一个抽象类继承...
接口是多继承的唯一方式,一个类可以实现多个接口。接口中的方法默认是 public abstract 的,意味着实现接口的类必须提供这些方法的具体实现。如 `java.sql.Connection`、`Statement` 和 `ResultSet` 都是接口,它们...
在VB.NET编程中,接口(Interface)是一种定义行为规范的类型,它允许不同的类实现相同的方法,从而确保这些类具有统一的行为。接口是完全抽象的,不包含任何方法的实现,仅定义方法、属性、事件和索引器的签名。在...
2. 类可以实现多个接口,通过逗号分隔,如`implements Interface1, Interface2`,实现多重继承的效果。 3. 接口的实例不能创建,只能通过接口引用类的对象来调用接口方法。 4. 接口提供了多态性,不同类实现同一个...
4. **提取类层次结构**:有时,多个类实现了相同接口,但它们的行为有所不同,这时可以考虑使用抽象类来封装共享的行为,然后让这些类继承抽象类,只实现各自特有的方法。抽象类可以看作是接口的一个具体实现,提供...
5. **多接口实现**:当一个类实现多个接口时,如果这些接口中有相同名称的成员,则必须显式地实现这些成员,以便提供不同的实现逻辑。 #### 结论 在C#.NET编程中,显式接口成员实现是一种重要的编程技术,它可以...
- 多态性:接口支持Java中的多态性,不同类可以实现相同的接口,从而具有相同的行为集。 - 扩展性:通过接口,可以在不修改现有类的情况下增加新的行为。 - **接口的声明**: - 使用`interface`关键字声明。 - ...
在Java中,单继承限制了一个类只能直接继承一个抽象类,但同时可以实现多个接口。 然后,我们来看一下**内部类**。内部类是定义在一个类内部的类,它可以访问外部类的所有成员,包括私有成员。内部类分为四种类型:...
例如,如果希望多个类能够响应相同的事件或者执行相同的操作,使用接口是一个很好的选择。 - **抽象类**通常用于定义一系列相关的类的基础结构。当类之间有共享的数据或逻辑时,使用抽象类可以减少代码重复,并确保...