接口顧名思義是用來拓展功能的ide
接口的注意點:函數
1.接口是一個特殊的類spa
2.接口成員變量默認修飾符爲 public static final code
3.在jdk1.7以前,接口中只能夠有抽象方法,在jdk1.8及以後,接口中能夠有非抽象方法,用static和default修飾,用static修飾的方法只能夠經過接口名調用,對象
而default修飾的方法,只能經過繼承此接口的實現類調用blog
4.接口沒有構造函數,不能建立對象(抽象類有構造函數,子類建立的對象時候默認調用父類構造函數,但抽象類自己不能建立對象)繼承
5.接口被非抽象類繼承時,非抽象類必須重寫接口中全部抽象方法,接口被抽象類繼承時,抽象類能夠重寫其中的抽象方法,也能夠不重寫接口
6.一個類能夠實現多個接口虛擬機
7.接口中的常量能夠經過實現類訪問,也能夠經過接口名訪問class
8.接口中的抽象方法只能經過實現類調用
9.接口中的方法若是沒有加上權限或者abstract修飾符 ,虛擬機會默認加上public abstract 修飾符 ,而且只支持public 和 default權限修飾符 ,並且default在此處不等同於在其餘地方使用default權限修飾符 ,在此處是方便經過繼承此接口的實現類去調用
public class Demo4 { /** * @param args */ public static void main(String[] args) { // LoginDao ld = new LoginDao(); User u = new User(); System.out.println(LoginDao.str);// 接口中的常量能夠經過接口名訪問 System.out.println(u.a); // 接口中的常量能夠經過實現類訪問 u.update(); // 接口中的抽象方法只能經過實現類訪問 u.del(); // 接口中default修飾的方法只能經過實現類訪問 LoginDao.add(); // 接口中static修飾的方法只能經過接口名訪問 } } interface LoginDao{ int a =10; String str = "aaa"; void update(); static void add(){ System.out.println("add...."); } default void del(){ System.out.println("add...."); } } interface queryDao{ void query(); } interface Zi extends queryDao,LoginDao{ } abstract class Account implements LoginDao,queryDao{ @Override public void update() { // TODO Auto-generated method stub } @Override public void del() { } } class User implements LoginDao,queryDao{ @Override public void update() { System.out.println("sadfasf"); } @Override public void query() { // TODO Auto-generated method stub } @Override public void del() { } }