JAVASE学习笔记-11(接口)

含义:

是一个引用数据类型,一种标准.

注意:

public abstract在接口内可以不写,默认会带有这两个关键字

如果类实现接口,必须重写接口内的所有方法

用法:

USB(接口):

public interface USB {
    public abstract void open();
    public abstract void close();
}

Mouse(实现类):

public class Mouse implements USB {


    @Override
    public void open() {
        System.out.println("鼠标打开");
    }

    @Override
    public void close() {
        System.out.println("鼠标关闭");
    }
}

Test1测试方法:

public class Test1 {
    public static void main(String[] args) {
        Mouse mouse = new Mouse();
        mouse.open();
        mouse.close();
    }
}

默认方法(JDK7+):

//USB.java
public interface USB {
    public abstract void open();
    public abstract void close();
    public default void d(){
        System.out.println("默认方法");
    }
}
//Mouse.java
public class Mouse implements USB {


    @Override
    public void open() {
        System.out.println("鼠标打开");
    }

    @Override
    public void close() {
        System.out.println("鼠标关闭");
    }
    @Override
    public void d(){
        System.out.println("我是默认方法的重写");
    }
}
//Test1.java
public class Test1 {
    public static void main(String[] args) {
        Mouse mouse = new Mouse();
        mouse.open();
        mouse.close();
        mouse.d();//调用默认方法
    }
}

默认方法可以重写也可以不重写

静态方法(JDK8+):

//Test1
public class Test1 {
    public static void main(String[] args) {
        Mouse mouse = new Mouse();
        mouse.open();
        mouse.close();
        mouse.d();//调用默认方法
        USB.s();//调用静态方法
    }
}

//USB
public interface USB {
    public abstract void open();
    public abstract void close();
    public default void d(){
        System.out.println("默认方法");
    }
    public static void s(){
        System.out.println("静态方法");
    }
}

默认方法和静态方法可以作为临时加一个小功能来使用

成员变量:

public static final 数据类型 数据名 = 值;

final代表最终的,不可二次赋值,可以视为常量

注意:

public static final不写在接口中也默认会有

接口内的成员变量必须手动赋值,不能不赋值,会报错

接口内成员变量的数据名按照规范要写为大写!

特点:

接口可以继承多个接口

public interface InterfaceA extends InterfaceB,InterfaceC{}

可以同时加入多个接口

public interface InterfaceImpl implements InterfaceB,InterfaceC{}

一个子类也可以同时实现多个接口

public class ziLei extends fuLei implements InterfaceB,InterfaceC{}

注意:

如果多个接口里有相同名称的方法,那么只需要重写一次

比如InterfaceA和InterfaceB里面都有一个abc方法

那么在实现类里面,只需要重写一次abc方法即可

如果实现多个接口时,有默认方法重名且传参一样的,那么必须重写一次默认方法!

接口和抽象的区别

相同点:

都是在继承体系的最顶层

都不能new创建对象

都包含抽象方法,都必须重写抽象方法

不同点:

抽象类:一般作为父类使用,可以有成员变量,构造器,成员方法,抽象方法等

接口:成员单一,一般抽取接口,抽取的都是方法,视为功能的集合

类不能多继承,接口可以多继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值