先贴一段代码(<JAVA编程思想>(中文版)第179页):
interface CanFight {
void fight();
}
interface CanSwim {
void swim();
}
interface CanFly {
void fly();
}
interface CanClimb{
void climb();
}
class ActionCharacter {
public void fight() {}
}
class Hero extends ActionCharacter
implements CanFight, CanSwim, CanFly, CanClimb {
public void swim() {}
public void fly() {}
public void climb() {}
}
public class Adventure {
//代理
public static void t(CanFight x) { x.fight(); }
public static void u(CanSwim x) { x.swim(); }
public static void v(CanFly x) { x.fly(); }
public static void w(ActionCharacter x) { x.fight(); }
public static void c(CanClimb x){ x.climb(); }
public static void main(String[] args) {
Hero h = new Hero();
t(h); // Treat it as a CanFight
u(h); // Treat it as a CanSwim
v(h); // Treat it as a CanFly
w(h); // Treat it as an ActionCharacter
c(h);
}
}
Hero类组合了基类ActionCharacter和接口CanFlight,CanSwim和CanFly,当通过这种方式将一个具体类和多个接口组合到一起时,具体类必须在前,接口在后(否则会报错).
CanFight接口与ActionCharacter的fight()方法特征签名一样,这样,Hero中就没有必要再提供fight()的定义了,因为这个定义会在编译的初期随着调用ActionCharacter基类而定义好.
这也提示了子类遵循某个接口或继承某个基类的不同之处.用通俗的话可以这样说:
接口是告诉这个类,我有的东西,你必须得有.(即接口有的方法定义,在子类定义时必须都重新定义一遍)
基类是告诉这个子类,我有的东西,你可以拿去用.(即基类有的方法定义,子类可以直接继承下去而不必重新定义)
接口的继承又会是另一种情形,它类似于类的继承.
nterface Sleep
{
void haveSleep();
}
interface Rest extends Sleep//接口的继承也是用extends关键字
{
//void haveSleep();//这些都是没 有必要的.
void haveRest();
}
interface Nap extends Sleep
{
//void haveSleep();
void haveNap();
}
interface nod extends Rest, Nap
{
//void haveSleep();
//void haveRest();
//void haveNap();
void haveNod();
}
分享到:
- 2008-11-02 21:59
- 浏览 1614
- 评论(2)
- 论坛回复 / 浏览 (2 / 3217)
- 查看更多
相关推荐
7.5.1 Java的“多重继承” 7.5.2 通过继承扩展接口 7.5.3 常数分组 7.5.4 初始化接口中的字段 7.6 内部类 7.6.1 内部类和上溯造型 7.6.2 方法和作用域中的内部类 7.6.3 链接到外部类 7.6.4 static内部类 7.6.5 引用...
Java支持单一继承,即一个子类只能有一个父类,但可以通过接口实现多重继承的效果。 4. **多态**:多态是指同一消息可以被不同类型的对象响应,实现了灵活的代码设计。Java通过方法重写(Override)和方法重载...
7. **接口**:接口在Java中是抽象类型,它定义了一组抽象方法,用于实现多重继承的效果。类可以实现多个接口,但只能继承一个类。 8. **异常处理**:Java提供了异常处理机制,通过try-catch-finally语句块来捕获和...
Java支持单一继承,即一个子类只能有一个父类,但可以通过接口实现多重继承的效果。 4. **多态**:多态是指同一消息可以被不同类型的对象响应。在Java中,多态主要体现在方法的重写(Override)和重载(Overload)...
- **多重继承**:Java不支持多重继承,但可以通过实现多个接口的方式来达到类似的效果。 - **灵活性与维护性**:当系统需要频繁地扩展新功能时,使用接口可能会更加灵活。因为接口的实现可以在不修改现有类的情况下...
2. **继承与多态**:Java支持单一继承,一个类只能继承一个父类,但可以通过接口实现多重继承。多态性允许子类对象可以替换父类对象,提供了更大的灵活性。 3. **异常处理**:Java使用try-catch-finally结构处理...
1. **继承层次结构**:一个类可以有多个子类,形成层次结构,但Java不支持多重继承,即一个类只能直接继承一个父类。 2. **成员访问**:子类能访问父类中非私有(public, protected, default)的成员变量和方法,但...
2. 继承:Java支持单一继承,即一个子类只能直接继承一个父类,但可以通过接口实现多重继承的效果。继承使得代码复用,子类可以扩展或修改父类的功能,同时保持代码的组织结构清晰。 3. 多态:多态是指同一种行为在...
在Java中,一个类可以只继承一个父类,但可以通过接口实现多重继承的效果。 4. **多态**:多态是指同一种行为在不同对象上表现出不同的形式。Java通过方法覆盖和接口实现来实现多态性,使得代码更具有灵活性和扩展...
Java支持单继承,即一个子类只能有一个直接父类,但可以通过接口实现多重继承的效果。 4. **多态**:多态是指同一个引用类型的变量在不同情况下可以指向不同类的对象,并且能够调用相应的独特方法。这是通过方法...
- **接口**:作为完全抽象的类型,接口用于定义行为规范,支持多重继承。 3. **异常处理**: - **异常类层次**:了解如何使用try-catch-finally结构捕获和处理运行时错误。 - **自定义异常**:创建新的异常类以...
接口可以用来实现多重继承,提高代码的灵活性。 4. **异常处理**:Java的异常处理机制,包括try-catch-finally语句块,异常类的层次结构,以及如何自定义异常。 5. **数组**:一维和多维数组的使用,包括静态数组...
它们用于定义行为规范,可以实现多重继承效果。 6. **异常处理**:Java的异常处理机制提供了一种捕获和处理错误的方式。通过try-catch-finally语句块,可以确保即使在异常情况下,程序也能执行必要的清理操作。 7....
Java支持单一继承,即一个子类只能有一个直接父类,但可以多重实现接口。 4. **多态**:多态是指同一种行为在不同对象上有不同的表现形式。在Java中,多态主要通过方法重写(Override)和向上转型实现。它增强了...
4. **继承相关的语法**:继承是面向对象编程的一个核心概念,允许子类继承父类的属性和方法。 5. **异常的语法**:Java提供了强大的异常处理机制,包括try、catch、finally等关键字,用于处理运行时可能发生的错误...
在Java中,若需要跳出多重嵌套循环,可以使用带有标签的`break`语句,例如`break ok;`,这样可以跳出标号所指的最外层循环。此外,也可以通过修改外层循环的条件来达到类似的效果,使得内层循环中的某些条件能影响...
它起源于1995年,基于C++语言的基础上发展而来,它摒弃了C++中复杂难懂的概念,如指针、多重继承等,这使得Java语言相对于C++而言更简单易学,同时它也具备了良好的安全性和平台独立性。 对于高职院校学生来说,...
类可以实现多个接口,从而实现多重继承的效果。 4. **常用Java包的使用**: - Java提供许多预先定义好的包,如`java.util`用于集合框架,`java.io`用于输入输出,`java.awt`和`javax.swing`用于图形用户界面等。...