接口:是抽象方法和全局常量组成
接口定义:
interface 接口名
{
全局常量;public static final 全局常量名
抽象方法;public abstract void 方法名(){}
}
接口的实现:
class 类名 implement 接口名称{}
接口中只有public权限,成员变量只能是final或静态
一个类只能继承一个类,但能实现多个接口
class 类名 implement a,b{}
如果一个类即要实现接口又要继承抽象类的话,例如:
class 类名 extends c implement a,b{}
一个接口不能继承一个抽象类,但是一个接口能够继承多个接口。
接口也能用来声明对象。
(1)接口实例
接口也可以同过多态性实例化。
interface A{
public void fun() ;
}
class B implements A{
public void fun(){
System.out.println("Hello") ;
}
};
public class InterPolDemo01{
public static void main(String args[]){
A a = new B() ; // 为接口实例化
a.fun() ;
}
};
(2)图形问题
Powerdesigner软件,尖括号表示两个类的继承关系,如果是抽象类则在类名旁边写上abstract关键字;如果是一个虚线的尖括号,然后在类旁边有“()”则表示的接口。
二十四,接口和抽象类
如果想选择性的实现接口中的方法,则设置一个抽象类去实现这个接口,此抽象类中对接口中的方法设置为空实现,则就可以在其他继承了该抽象类的子类中,可以选择性的实现接口中的方法
interface Window{
public void open() ; // 打开窗口
public void close() ; // 关闭窗口
public void icon() ; // 最小化
public void unicon() ; // 最大化
}
abstract class WindowAdapter implements Window{
public void open(){}
public void close(){}
public void icon(){}
public void unicon(){}
};
class MyWindow extends WindowAdapter{
public void open(){
System.out.println("打开窗口!") ;
}
};
public class AdpaterDemo{
public static void main(String args[]){
Window win = new MyWindow() ;
win.open() ;
}
}
主方法实际上就是一个客户端。
所有接口的实例化对象都是通过工厂类取得的,那么客户端调用的时候根据传入的名称不同,完成不同的功能。
如果碰到字符串对象与常量的比较,则要把常量放到外面,即:常量.equals(字符串)
(3)代理模式
interface Give{
public void giveMoney() ;
}
class RealGive implements Give{
public void giveMoney(){
System.out.println("把钱还给我。。。。。") ;
}
};
class ProxyGive implements Give{ // 代理公司
private Give give = null ;
public ProxyGive(Give give){
this.give = give ;
}
public void before(){
System.out.println("准备:") ;
}
public void giveMoney(){
this.before() ;
this.give.giveMoney() ; // 代表真正的讨债者完成讨债的操作
this.after() ;
}
public void after(){
System.out.println("销毁所有罪证") ;
}
};
public class ProxyDemo{
public static void main(String args[]){
Give give = new ProxyGive(new RealGive()) ;
give.giveMoney() ;
}
};