1、接口的使用
理解:
1.接口是一个特殊的抽象类
2.在JDK1.8之前,接口中只能有静态常量和抽象方法
3.在JDK1.8开始,接口中允许使用静态方法和默认方法
4.接口是引用数据类型的一种
应用场景:
接口:制定规则,定义哪些方法为抽象的
实现类:实现接口中的抽象方法
需求:设计学生管理系统
分析:
1.有学生管理系统的类 - StudentManagerSyste类
2.学生管理系统是管理一个一个学生对象 - Student类
3.学生管理系统是管理学生对象的增删查改
// 学生管理系统的接口——interface public interface StudentManagerSystem { //默认使用public static final修饰 -- 1、静态常量 int NAME = 1; int SEX = 2; int AGE = 3; //默认使用public abstract修饰 -- 2、抽象方法:增删查改 //制定规则,定义哪些方法为抽象的 public int add(Student stu); public int delete(Student stu); public int update(Student stu,int type,Object val); public Student query(String name); //3、默认方法 default void print(Student[] stus){ for (Student stu : stus) { System.out.println(stu); } } //4、静态方法 public static void method(){ System.out.println("静态方法"); }
// 学生管理系统的实现类 public class StudentManagerSystemImpl implements StudentManagerSystem { //实现类:实现接口中的抽象方法 @Override public int add(Student stu) { // TODO Auto-generated method stub return 0; } ...无\有参构造方法,set\get方法 }
2、接口的深入
关系:
类 - 类:单继承,一个类可以继承一个类
类 - 接口:多实现,一个类可以实现多个接口
接口 - 接口:多继承,一个接口可以继承多个接口
1.一个类可以实现多个接口? 可以实现
public class A implements I1,I2{}2.一个接口可以实现多个接口? 不可以实现,但是可以继承
public class I1 extends I2,I3{}3.接口里面的方法不一定都是抽象的? 是的 JDK1.8开始接口中允许有:静态常量、抽象方法、默认方法、静态方法
4.接口解决了类的单继承问题? 是的(类 - 接口:多实现,一个类可以实现多个接口)
5.一个类是否可以继承一个类并同时实现多个接口? 可以
public class A extends B implements I1,I2,I3{}6.接口可以new对象? 不可以,创建的是匿名内部类的对象
3、创建匿名内部类对象的步骤
1.底层创建匿名实现类,实现I1接口中的i1Method方法
public class Test01$1 implements I1{ @Override public void i1Method() { System.out.println("用良心做教育"); } }
2.创建匿名实现类对象 -- new Test01$1();
3.将实现类对象的内存地址赋值给接口的引用