------- android培训、java培训、期待与您交流! ----------
1、抽象类和抽象方法
抽象方法是仅有声明而没有方法体的方法,其语法是:
abstract void f();
包含抽象方法的类叫做抽象类。如果一个类中包含一个或多个抽象方法,该类必须被限定 为抽象的,否则编译会出错。
抽象类是用来被继承的,继承的类必须实现抽象类中的所有方法,如果没有全部实现,只实现了一部分,则导出类也是抽象类,且编译器会强制你加上abstract修饰词。
抽象类不可以用new创建对象,必须被子类复写多有抽象方法后,建立子类对象调用。
其作用就是:不让该类建立对象。
2、接口
常见定义:常量:public static final
方法:public abstract
要创建一个接口,需要用interface代替class关键字,可以在interface前添加public关键字, 不加的话是包访问权限,只能在一个包内使用。
常量域隐式地是static和final,即使不显示写出,也是static和final的。方法声明时,即使不写public,也默认为public。在实现一个接口时,在接口中被定义的方法必须为public,否则编译器不允许。
要让一个类遵循某个特定接口,使用implements关键字。
子类将接口中所有的方法都实现后,才能使用。
接口可以被类多实现,用逗号隔开即可。
接口和接口之间是继承关系,可以扩展接口功能。接口可以多继承。
当我们进行程序设计时,要把基本功能定义在类中,扩展功能定义在接口中。
3、java中的多重继承
interface CanFight{
void fight();
}
interface CanSwim{
void swim();
}
interface CanFly{
void fly();
}
class ActionCharacter{
public void fight(){}
}
class Hero extends ActionCharacter implements CanFight,CanFly,CanSwim{
public void swim(){}
public void fly(){}
}
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 main(String[] args) {
Hero h = new Hero();
t(h);
u(h);
v(h);
w(h);
}
}
这个例子中,我们继承了ActionCharacter类,实现了CanFight、CanSwim、CanFly接口,使得Hero类继承了
fight(),swim(),fly()的功能。
这个例子体现了使用接口的核心原因:为了能够向上转型为多个基类型。另外一个使用接口的原因是,防止创
建该对象,与抽象类的原因相同。