接口顾名思义是用来拓展功能的
接口的注意点:
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() { } }