- 抽象类和抽象方法
包含抽象方法的类叫做抽象类 - 接口
在接口中的每一个方法确实都只是一个声明。方法自动是public的
这里先声明一种设计模式:策略模式
创建一个能够根据所传递的参数对象的不同而具有不同行为方法被称为策略设计模式。
下面用一个例子说明:
public class Processor {
public String name(){
return getClass().getSimpleName();
}
Object process(Object input){
return input;
}
}
class upCase extends Processor{
String process (Object input){
return ((String)input).toUpperCase();
}
}
class DownCase extends Processor{
String process (Object input){
return ((String)input).toLowerCase();
}
}
class Splitter extends Processor{
String process (Object input){
return Arrays.toString(((String) input).split(" "));
}
}
class Apply{
public static void process (Processor p , Object s){
System.out.println("Using Process "+ p.name());
System.out.println(p.process(s));
}
static String str = "Disagreement with beliefs is by definition incorrect";
public static void main(String[] args) {
process(new upCase(),str);
process(new DownCase(),str);
process(new Splitter(),str);
}
}
DISAGREEMENT WITH BELIEFS IS BY DEFINITION INCORRECT
Using Process DownCase
disagreement with beliefs is by definition incorrect
Using Process Splitter
[Disagreement with beliefs is by definition incorrect]
- 使用接口的原因
- 先看例子:
- `public interface CanFight {
void figth();
}
interface CanSwim{
void swim();
}
interface CanFly{
void fly();
}
class ActionCharacter{
public void fight(){}
}
class Hreo extends ActionCharacter implements CanFight,CanFly,CanSwim{
public void swim(){}
public void fly(){}
public void fight(){}
public void figth(){}
}`
实现了多重继承,其中使用接口的核心原因在于:
为了能够向上转型为多了基类型 (以及由此带来的灵活性,在继承中也描述过继承的主要原因:其最重要的方面是用来表现新类和基类之间的关系,这种关系可以用“新类是现有类一种类型”加以概括)
防止客户端程序员创建该类的对象,并确保者仅仅是创建了一个接口。
那么我们应该怎样使用接口或者抽象类呢?
如果创建不带任何方法定义和成员变量的基类那么就应该选择接口,
接口可以继承接口