接口interface

接口顾名思义是用来拓展功能的

接口的注意点:

1.接口是一个特殊的类

2.接口成员变量默认修饰符为 public static final 

3.在jdk1.7之前,接口中只可以有抽象方法,在jdk1.8及之后,接口中可以有非抽象方法,用static和default修饰,用static修饰的方法只可以通过接口名调用,

而default修饰的方法,只能通过继承此接口的实现类调用

4.接口没有构造函数,不能创建对象(抽象类有构造函数,子类创建的对象时候默认调用父类构造函数,但抽象类本身不能创建对象)

5.接口被非抽象类继承时,非抽象类必须重写接口中所有抽象方法,接口被抽象类继承时,抽象类可以重写其中的抽象方法,也可以不重写

6.一个类可以实现多个接口

7.接口中的常量可以通过实现类访问,也可以通过接口名访问

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() {
         
    }

    
}

 

posted @ 2017-07-11 07:52  KylinStayHere  阅读(183)  评论(0编辑  收藏  举报