接口

接口是一种能力

关键字:interface

语法:

[修饰符] interface 接口名 extends 父接口1,父接口2.......{
       //常量定义
       //方法定义
}

class 类名 extends 父类名 implements 接口1,接口2.....{
      //类成员
}

 

接口的注意事项:

1:接口的命名规则与类相同,如果是public,则该接口在整个项目中可见,如果省略修饰符,则该接口只能在当前类中可见

2:接口中可以定义常量,不能定义变量,接口中的属性会自动用public static final 修饰,即接口中的属性都是全局静态常亮,接口中的常量必须在定义时指定初始值;

3:接口中的所有方法都是抽象方法,接口中的方法都会用public abstract修饰,即接口中只有全局抽象方法

4:和抽象类一样,接口也不能实例化,接口中不能有构造方法,

5:接口不能实例化,因为接口是比抽象类抽象程度更高的类型 

6:一个类如果实现了某个接口,必须重写该接口中的所有方法
7:接口中的所有字段必须是公有的静态常量
8:接口本身也是一种数据类型
9:接口只是为实现它的类定义了规范,保证实现类方法签名和接口中对应方法一致。
10:通过接口可以实现多继承
11:一个借口中最好只定义一个方法,防止接口污染
 
抽象类和接口的区别
01.抽象类中可以有普通方法,接口中不能
02.抽象类可以有构造,
接口不能
03.抽象类中可以有普通字段,而接口中不行
04.抽象类不能实现多继承,接口可以

注:接口内,所有方法都没有方法体

   接口的特性:
   接口不可以被实例化 常作为类型使用
   实现类必须实现接口的所有方法
   实现类可以实现多个接口
   接口中的变量都是静态常量 Java中的多继承

示例代码:

package cn.javaOppDay01;

public abstract class Door {
//开门方法
    public abstract void openDoor();
    //关门方法
    public abstract void closeDoor();
}
定义的Door类
package cn.javaOppDay01;

public class FDDoor extends Door implements Ilock,IRing {


    //响铃的方法
    public void ring(){
        System.out.println("门铃响了");
    }
    
    

    @Override
    //上锁的方法
    public void lockd() {
        System.out.println("门锁了");
    }
        
    
    @Override
    public void openDoor() {
        System.out.println("openDoor");

        
    }
    @Override
    public void closeDoor() {
        System.out.println("closeDoor");
    }



}
子类
package cn.javaOppDay01;

public interface Ilock {

    //在接口中所有的变量都是静态
    public int num=3;
    //在接口所有的方法都是抽象方法,没有方法体
    public void lockd();
    
}
接口 ILock
package cn.javaOppDay01;
    //门铃接口
public interface IRing {

    public void ring();
    
}
接口 IRing
package cn.javaOppDay01;

public class MyMain {
    public static void main(String[] args) {
        FDDoor door =new FDDoor();
        door.closeDoor();
        door.lockd();
        door.ring();
        door.openDoor();
    }
}
测试类

总结:
   接口有比抽象类更好的特性:
 1.可以被多继承
 2.设计和实现完全分离
 3.更自然的使用多态
 4.更容易搭建程序框架
 5.更容易更换实现
 ...... 

 Java中的接口
 属性全都是全局静态常量
 方法都是全局抽象方法
 无构造方法
 一个类可以实现多个接口,非抽象类实现接口时必须实现接口中的全部方法
 抽象类利于代码复用,接口利于代码维护

 
 
 
 

 
 
 
 
 
 
 

posted @ 2018-03-04 13:42  秋风伊人  阅读(169)  评论(0编辑  收藏  举报