1.抽象类:如果一个类包含一个或多个抽象方法(抽象方法要用abstract修饰),该类必须被限定为抽象类,抽象类不能被实例化,但它被继承时,实例化子类对象时抽象类的构造方法也会执行。
2.接口是一个极度抽象的类,接口只提供形式,而不提供任何具体的实现,接口类中只能存在未实现的public方法,和变量(也叫域,这些域隐式地是static和final),
3.多态里面的向上转型不仅试用与普通类,对抽象类,接口都试用,他们的行为都是相同的。(策略设计模式有应用)
4.Java的多重继承:继承格式(class Hero extends ActionChracter implement CanFight,CanSwim,CanFly)
5.接口通过继承可以扩展接口,一般情况下,继承只用于继承单一类,但对接口可以引用多个,用逗号隔开即可。
6.接口适用于适配器设计模式,适配器的代码将接受你所拥有的接口,生成你所需要的接口,也适用于工厂设计模式,工厂设计模式:不是通过构造器创建对象,而是通过调用方法去生成实现某个接口的对象。
eg:在相同的棋盘上下国际象棋和西洋跳棋
interface Game{
boolean move();
}
interface Gamefactory{
Game getGame();
}
class Checkers implements Game{
private int moves=0;
private static final int MOVES=3;
public boolean move(){
System.out.println("Checkers move "+moves);
return ++moves !=MOVES;
}
}
class CheckersFactory implements GameFactory{
public Game getGame(){
return new Checkers();
}
}
class Chess implements Game{
private int moves=0;
private static final int MOVES=4;
public boolean move(){
System.out.println("Checkers move "+moves);
return ++moves !=MOVES;
}
}
class ChessFactory implements GameFactory{
public Game getGame(){
return new Chess();
}
}
public class Games{
public static void playGame(Gamefactory factory){
Game s=factory.getGame();
while(s.move());
}
}
--打印
Checkers move 0;
Checkers move 1;
Checkers move 2;
Chess move 0;
Chess move 1;
Chess move 2;
Chess move 3;