面向对象-接口

📅 2026/8/14 15:47:51
面向对象-接口
一、接口的定义以及使用1、接口是一个引用数据类型是一种标准和规范2、关键字a、interface 接口public interface 接口名{}b、implements 实现实现类 implements 接口名{}3、使用流程1定义接口public interface 接口名{}2实现public class 实现类名 implements 接口名{}3使用a、实现类实现接口b、重写接口中的抽象方法c、创建实现类对象(接口不能直接new对象)d、调用重写的方法二、接口中的成员2.1、抽象方法1、定义格式public abstract 返回值类型 方法名(形参);2、注意不写 public abstract默认也有3、使用a、定义实现类实现接口b、重写抽象方法c、创建实现类对象调用重写的方法//接口 public interface USB { public abstract void open(); String close(); } //实现类 public class Mouse implements USB{ Override public void open() { System.out.println(打开鼠标); } Override public String close() { return 关闭鼠标; } } //测试类 public class Test { public static void main(String[] args) { Mouse mouse new Mouse(); mouse.open(); String result mouse.close(); System.out.println(result); } }2.2、默认方法1、格式public default 返回值类型 方法名(形参){方法体return 结果}2、使用a、定义实现类实现接口b、默认方法可以重写也可以不重写c、创建实现类对象调用默认方法2.3、静态方法1、 定义格式public static 返回值类型 方法名(参数){方法体return 结果}2、使用接口名直接调用2.4、成员变量1、格式public static final 数据类型 变量名 值2、相关知识点finalfinal代表最终的被它修饰的变量不能二次赋值可以视为常量3、特点不写public static final 默认也有4、使用接口名直接调用5、注意a、被static final修饰的成员变量需要手动赋值b、习惯上将被tatic final修饰的成员变量名大写//接口的定义 public interface USB { static final int NUM1 100; int NUM2 200; // int NUM3; 需要初始化值 public default void methodDef() { System.out.println(我是默认方法); } public static void methodSta() { System.out.println(我是静态方法); } } //实现类的定义 public class Mouse implements USB{ Override public void methodDef(){ System.out.println(我是重写默认方法); } } //测试类的定义 public class Test { public static void main(String[] args) { Mouse mouse new Mouse(); mouse.methodDef(); USB.methodSta(); System.out.println(USB.NUM1); } }三、接口的特点1、接口可以多继承 -一个接口可以继承多个接口public interface InterfaceA extends InterfaceB,InterfaceC{};2、接口可以多实现 - 一个实现类可以实现一个或多个接口public class InterfaceImpl implements InterfaceA,interfaceB{}3、一个子类可以继承一个父类的同时实现一个或多个接口public class Zi extends Fu implements InterfaceA,InterfaceB{}4、注意a、继承也好实现接口也罢只要是父类中或者接口的抽象方法子类或实现类都要重写。b、当一个类实现多个接口时如果接口中的抽象方法有重名并且参数一致只需要重写一次。c、当一个类实现多个接口时如果多个接口中默认方法有重名的且参数列表一样必须重写一次默认方法public interface A { public void method(); //抽象方法没有方法体 } public interface B { public void method(); } public class Impl implements A,B { //只需重写一次即可 Override public void method() { System.out.println(我是重写之后的方法); } }四、接口和抽象类的区别1、相同点a、都位于继承体系的顶端用于被其它类实现或继承b、都不能newc、都包含抽象方法其子类或者实现类都必须重写这些抽象方法2、不同点a、抽象类一般作为父类使用可以有成员变量、构造方法、成员方法、抽象方法等。b、接口成员单一。一般抽取接口抽取的都是方法视为功能的大集合c、类不能多继承但是接口可以