今天看了韩顺平老师所讲解的接口(interface),进一个加深了对接口的理解。接口:就是给出一些没有内容的方法(抽象方法),封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。也可以这样理解:接口是更加抽象的抽象类,抽象类的方法可以有普通方法(成员方法),接口里的所有方法都没有方法体(抽象方法)。接口体现了程序设计的多态性和高内聚低耦合的设计思想。
接口的注意事项: 1.接口不能被实例化。 2.接口内的所有方法都没有方法主体(抽象方法)。 3.一个类可以实现多个接口(解决了类的单继承)。 4.接口中可以有变量但是常量final(只能用public修饰,或者不加修饰符会默认为public,接口中的变量会默认为final)而且接口中的变量是静态的static。最终的常量,相当于全局常量。在java开发中,把经常用的变量定义在接口中,作为全局变量使用。访问形式,接口名.变量名。 5.一个接口不能继承其它类,但是可以继承别的接口(接口可以继承接口)。 public class Interface {
public static void main(String[] args) { //实例化相机类
Camera cam=new Camera(); //实例化手机类
MobliePhone mp=new MobliePhone(); //实例化电脑类
Computer com=new Computer();//使用接口
com.useUsb(cam);
com.useUsb(mp);
System.out.println(Usb.name+" fighting");
}
}
//定义Usb接口
interface Usb{
//接口里的方法都是抽象方法,不加abstract也会默认有一个abstract。
//接口里的访问修饰符必须是公共的,不加也会默认是公共的。
//接口里的变量是静态的常量。常量不能为空,声明时必须赋值。
public static final String name="鑫鑫";
public void start();
abstract public void stop();
}//定义另一个接口Usb_expand
interface Usb_expand extends Usb{
void work();
/**子接口可以重写父接口的方法,但是重写父接口里面的方法没有意义。
* 因为,接口里面的方法没有方法主体(抽象方法),就算你不重写,子接口也拥有服接口的所以抽象方法。
*/
}
//照相机类
class Camera implements Usb,Usb_expand{ //实现接口里面的所以抽象方法
@Override
public void start() {
// TODO Auto-generated method stub
System.out.println("启动相机");
} @Override
public void stop() {
// TODO Auto-generated method stub
System.out.println("关闭相机");
} @Override
public void work() {
// TODO Auto-generated method stub
System.out.println("相机工作....");
}
}
//手机类
class MobliePhone implements Usb,Usb_expand{ //实现接口里面的所以抽象方法
@Override
public void start() {
// TODO Auto-generated method stub
System.out.println("启动手机");
} @Override
public void stop() {
// TODO Auto-generated method stub
System.out.println("关闭手机");
} @Override
public void work() {
// TODO Auto-generated method stub
System.out.println("手机工作...");
}
}
//电脑类,拥有USB接口
class Computer{
//使用Usb接口
public void useUsb(Usb_expand usb){
usb.start();
usb.stop();
usb.work();
}
}
接口的注意事项: 1.接口不能被实例化。 2.接口内的所有方法都没有方法主体(抽象方法)。 3.一个类可以实现多个接口(解决了类的单继承)。 4.接口中可以有变量但是常量final(只能用public修饰,或者不加修饰符会默认为public,接口中的变量会默认为final)而且接口中的变量是静态的static。最终的常量,相当于全局常量。在java开发中,把经常用的变量定义在接口中,作为全局变量使用。访问形式,接口名.变量名。 5.一个接口不能继承其它类,但是可以继承别的接口(接口可以继承接口)。 public class Interface {
public static void main(String[] args) { //实例化相机类
Camera cam=new Camera(); //实例化手机类
MobliePhone mp=new MobliePhone(); //实例化电脑类
Computer com=new Computer();//使用接口
com.useUsb(cam);
com.useUsb(mp);
System.out.println(Usb.name+" fighting");
}
}
//定义Usb接口
interface Usb{
//接口里的方法都是抽象方法,不加abstract也会默认有一个abstract。
//接口里的访问修饰符必须是公共的,不加也会默认是公共的。
//接口里的变量是静态的常量。常量不能为空,声明时必须赋值。
public static final String name="鑫鑫";
public void start();
abstract public void stop();
}//定义另一个接口Usb_expand
interface Usb_expand extends Usb{
void work();
/**子接口可以重写父接口的方法,但是重写父接口里面的方法没有意义。
* 因为,接口里面的方法没有方法主体(抽象方法),就算你不重写,子接口也拥有服接口的所以抽象方法。
*/
}
//照相机类
class Camera implements Usb,Usb_expand{ //实现接口里面的所以抽象方法
@Override
public void start() {
// TODO Auto-generated method stub
System.out.println("启动相机");
} @Override
public void stop() {
// TODO Auto-generated method stub
System.out.println("关闭相机");
} @Override
public void work() {
// TODO Auto-generated method stub
System.out.println("相机工作....");
}
}
//手机类
class MobliePhone implements Usb,Usb_expand{ //实现接口里面的所以抽象方法
@Override
public void start() {
// TODO Auto-generated method stub
System.out.println("启动手机");
} @Override
public void stop() {
// TODO Auto-generated method stub
System.out.println("关闭手机");
} @Override
public void work() {
// TODO Auto-generated method stub
System.out.println("手机工作...");
}
}
//电脑类,拥有USB接口
class Computer{
//使用Usb接口
public void useUsb(Usb_expand usb){
usb.start();
usb.stop();
usb.work();
}
}
Frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});