JAVA的接口
Pet
abstract void beFriendly();
abstract void play();
所有接口的方法都是抽象的,所有任何实现pet的接口的类都必须要实现这些方法。
接口的定义:
public interface Pet{…}
使用“interface” 来取代“class”
接口的实现:
public class Dog extends Canine implements Pet{…}
使用"implements"这个关键字。注意实现interface时还必须在某个类的继承之下。
设计与实现Pet接口
public interface Pet{
abstract void beFriendly(); //接口的方法一定时抽象的,所以必须以分号结束。记住它们没有内容!
abstract void play();
}
public class Dog extends Canine implements Pet{ //implements关键词后面跟着接口的名称
public void beFriendly(){.....}
public void play(){....} //必须实现出Pet的方法,这是合约规定
public void roam(){....}
public void eat(){...} //一般的覆盖方法
}
类还可以实现多个接口
public class Dog extends Animal implements Pet,Saveable,paintable{...}
如何判断应该时设计类、子类、抽象类或是接口呢?
1、如果新的类无法对其他的类通过IS-A测试时,就设计不继承其他类的类。
2、只有在需要某类的特殊化版本时,以覆盖或增加新的方法来继承现有的类。
3、当你需要定义一群子类的模板,又不想让程序员初始化此模板时,,设计出抽象的类给它们用。
4、如果想要定义出类可以扮演的角色,使用接口。
调用父类的方法
但我们创建出一个具体的子类且必须要覆盖某个方法,但又需要执行父类的方法时可以使用super这个关键字能让你在子类中调用父类的方法。
例如:
abstract class Report{
void runReport(){
//设置报告
}
void printReport(){
//输出
}
}
class BuzzwordReport extends Report{
void runReport(){
super.runReport(); //调用父类方法
buzzwordCompliance();
printReport();
}
void buzzwordComliance(){…}
}
在子类中指定下面的命令:
super.runReport();
父类的方法就会执行
要点:
1、如果不想让某个类被初始化,就以abstract这个关键词将它标记为抽象的。
2、抽象的类可以带有抽象和非抽象的方法。
3、如果类带有抽象的方法,则此类必定标识为抽象的。
4、抽象的方法没有内容,它的声明是以分号结束的。
5、抽象的方法必须在具体的类中运行。
6、JAVA所有的类都是Object(java.lang.Object)直接或间接的子类。
7、从ArrayList《object》取出的对象只能被Object引用,不然就要用类型转换来改变。
8、Java不允许多重继承,因为那样会有致命方块的问题。
9、接口就好像是100%纯天然抽象类。
10、以interface这个关键字取代class来声明接口。
11、实现接口时要使用implement这个关键字。
12、class可以实现多个接口。
13、实现某接口的类必须实现接口所有的方法,因为这些方法都是public与abstract的。
14、要从子类调用父类的方法可以用super这个关键字来引用。