java接口

目录

1.接口是什么?

2.接口的使用原则

3.接口的应用场景

3.1定义规范/标准

3.2表示一种具备的能力或者行为

4.JDK内置的两大接口

4.1java.long.Comparable

4.2java.long.Cloneable

1.接口是什么

是使用interface定义的接口,接口只有局部变量和抽象方法(JDK8之前)

JDK8扩展了default方法。

子类通过implements实现接口

而接口的命名以L开头和类做区分,子类实现接口可以使用impl结尾,表示接口的子类。

 

2.接口的使用规则

 2.1接口中只有public权限,接口中只有全局变量和抽象方法,只有在接口中abstract、static、final、public都可以省略掉。(在阿里编码中,定义接口尽量简洁,上面的关键字都不要写)

 2.2接口的多实现,接口可以同时实现多个父接口;如上,在实现多个父接口时,用逗号分隔。

接口中可以使用extends来实现多个父接口。

(那么问题来了,子类必须实现父接口中的所有抽象方法吗?) 

答案是:不是,上述的前提是子类是普通类,若子类是抽象类,就不需要全部都实现

 2.3接口不能直接实例化对象,必须通过子接口向上转型。

 上面是俩个接口IMessage、INews。

 下面的MessageImps实现了俩个接口

 所以可以看出要想使用getNews,要用父接口之间的相互转换。

 而在这里有一个重要的点:

父类/父接口 父引用 =new 子类实例();

到底能调用啥方法要看前面的父类/父接口中定义了啥方法,

调用的方法长啥样子,要看new的是哪个子类。

 2.4子类若同时继承父类,实现接口。

解决方法:先试用extends继承一个父类,而后使用implements实现接口。

public class DTest extends D implements A,B{
}

子类实现接口没有is-a原则,这个原则只是类之间的继承。

3.接口的应用场景

 3.1定义规范/标准(USB接口,5G接口)

为什么这里的参数是USB port1、USB port2?而不是Mouse、Keyboard?

为了方便我们插入其他设备也可以,而不是只让鼠标和键盘使用。也可以插入U盘、手机等。

 3.2表示一种具备的能力或者行为。

4.JDK内置的两大接口

 4.1java.long.Comparable

Comparable具备可比较的能力

public int comparaTo(T O)

=0,说明当前对象等于目标对象O

>0,说明当前对象大于目标对象O

<0,说明当前对象小于目标对象O

 4.2java.long.Cloneable(用于克隆接口)

克隆一个新的对象,新的对象的属性值是从旧对象中拷贝过来的(这里涉及深浅拷贝,后续会提到)

package interface_test;
//这时A类也具备了克隆能力
class A implements java.lang.Cloneable {
    int num;
    @Override
    protected A clone() throws  CloneNotSupportedException{
        return (A) super.clone();
    }
}
public class B implements java.lang.Cloneable {
    private static B newB;
    A a =new A();
    @Override
    protected B clone() throws CloneNotSupportedException {
        B.newB =(B) super.clone();
        newB.a=a.clone();//也是通过克隆来的
        return newB;
    }
    public static void main(String[] args) throws CloneNotSupportedException {
        B b1=new B();
        B b2=b1.clone();
        System.out.println(b1==b2);
        System.out.println(b1.a.num);//0
        b1.a.num=100;
        System.out.println(b2.a.num);//0
    }
}

package interface_test;

public class Cloneable {  //克隆类只要这样写就可以

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值