JAVA 基础 接口
抽象类和抽象方法
抽象类
包含抽象方法的类叫抽象类。
private int param1;
abstract void f1();
void f2() {}
}
1、如果一个类包含有抽象方法,则必须限定为抽象类,否则编译器会报错。
2、抽象类不能实例化,否则编译器会报错。
接口可以被视为一个比“抽象类”更加抽象的类。
实现接口
一个类遵循某个特定或一组接口,必须使用 implements 关键字。
void fly();
}
class Bird implements Fly {
@Override
public void fly() {
System.out.println("展翅飞翔");
}
}
注:接口中的方法必须是 public 类型,可以不显示地指定。但是如果指定为其他类型,编译器会报错。
扩展接口
玩过游戏的朋友们,肯定熟悉这个模式。
一名战士需要具备战斗能力。一名骑士不仅需要具备战斗能力,也需要具备骑术。
更进阶的圣骑士则还需要具备法师一般的魔法能力。这个关系可以抽象成以下代码:
void fight();
}
interface Knight extends Warrior {
void riding();
}
interface Enchanter {
void magic();
}
// Paladin类实现多个接口,需要包含这些接口的所有方法
class Paladin implements Knight, Enchanter {
public void fight() {}
public void riding() {}
public void magic() {}
}
多重继承
请考虑如下图的情况,一名在职研究生既是职工,也是学生,也是研究生。如果我们要在代码中实现这个继承关系,该如何去做?
C++中支持多重继承,但是JAVA中不支持多重继承,以下方式是错误的。一个类不能扩展多个类。
class Student extends Person {};
class Postgraduate extends Student {};
class Employee extends Person {};
class OnJobPostgraduate extends Postgraduate, Employee {};
JAVA中虽然不支持多重继承,但是可以通过接口实现类似的行为。一个类可以实现多个接口。
interface Student extends Person {};
interface Postgraduate extends Student {};
interface Employee extends Person {};
class OnJobPostgraduate implements Postgraduate, Employee {};
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。