1.接口 Interface
1. 抽象方法在接口中的定义
在任何版本的Java中,接口都可以定义抽象方法
格式:
public abstract 返回值类型 方法名称();
【注意事项】
1、接口中,方法的修饰符必须是两个归固定的关键字: public abstract
2、这两个关键字可以选择性的省略
//MyInterfaceAbstract-implements
public interface MyInterfaceAbstract {
//以下都是正确的抽象方法的定义
public abstract void method1();
abstract void method2();
public void method3();
void method4();
}
2. 接口的使用
-
接口不能直接使用,必须有一个 “ 实现类 ” 来 “ 实现 ” 该功能
格式:public class 实现类名称 implements 接口名称{
//…
}
2.接口的 “ 实现类 ”必须覆盖重写(实习)接口中所有的抽象方法
3.使用的时候,不能直接创建接口的对象,必须创建(new)是实现类的对象,进行使用
//实现类-MyInterfaceAbstract-class
public class MyInterfaceAbstractImpl implements MyInterfaceAbstract{
@Override
public void method1() {
System.out.println("这是第一个方法");
}
@Override
public void method2() {
System.out.println("这是第二个方法");
}
@Override
public void method3() {
System.out.println("这是第三个方法");
}
@Override
public void method4() {
System.out.println("这是第四个方法");
}
}
//测试程序-ImplTest-javaclass
public class ImplTest {
public static void main(String[] args) {
//错误写法,直接创建接口对象
// MyInterfaceAbstract impl = new MyInterfaceAbstract();
//正确写法,创建接口的实现类的对象
MyInterfaceAbstractImpl impl = new MyInterfaceAbstractImpl();
impl.method1();
impl.method2();
}
}
2.接口的默认方法
1. 默认方法:
从Java8 开始,接口里允许定义默认方法,格式:
public defalut 返回值类型 方法名称(参数列表){
//方法体
}
2. 接口的默认方法的作用
用来解决接口升级的问题:当接口升级,添加了新的抽象方法时,在不改变这个接口之前已经写好的实现类的情况下,升级接口。
而且原有的实现类可以继承添加的默认方法,无需修改原来的代码
3. 实例代码
//接口A:
public interface MyInterfaceDefault(){
//抽象方法A
public abstract void MethodA();
//抽象方法B(升级接口),此时,下面的实现类MyInterfaceDefaultA就会出错,解决方法
// public abstract void MethodB();
//将上面的抽象方法改成默认方法就可以解决问题,
public default void MethodB(){
System.Out.println("这是新添加的默认方法!");
}
}
//接口A的实现类-
public class MyInterfaceDefaultA(){
@Override
public abstract void MethodA(){
System.Out.println("接口的实现类");
}
}
//测试程序
public class Test(){
public static void main(String[] args){
MyInterfaceDefaultA a = new MyInterfaceDefaultA();
a.MethodA();//可以正常调用
a.MethodB();//接口实现类的对象可以调用接口的默认方法,因为MyInterfaceDefaultA()继承了原来的接口新添加的默认方法
}
}
我是小白,如有错误请指正,仅用作自己写笔记,写的不好勿喷。内容学习来自哔哩哔哩
var code = “f88718eb-7d06-4ca9-85f6-c98f2bcb1446”