JAVA自学笔记(接口)

1、接口基础

  • 概念:接口相当于特殊的抽象类,定义方式、组成部分和抽象类类似

  • 接口是一种标准

  • Java为单继承,当父类的方法种类无法满足子类需求时,可以通过实现接口扩充子类能力

  • 接口支持多实现,可为类扩充多种能力。

  • 语法:

    • 使用interface关键字定义接口

      特点:

    • 没有构造方法,不能创建对象

    • 只能定义:公开静态常量(可以省略public static final)、公开抽象方法(可以省略public abstract)

    public interface MyInterFace{
        public static final String FIELD = "value";
        public abstract void method();
    }
  • 使用

    //定义接口
    interface MyInterface {
         void methon1();
    }
    //定义接口实现类
    public class Impl implements MyInterface{
       @Override
       public void methon1(){
       System.out.println("methon1")
       }
    }
    //主函数
    MyInterface myInterface = new Impl;
    myInterface.methon1();
    (输出:methon1)

1.2 接口和抽象类的异同

  • 相同:

    • 可编译成字节码文件

    • 不能创建对象

    • 可以作为引用类型(声明变量)

    • 具备Object类中所定义的方法

  • 不同:

    • 接口所有属性都是公开静态常量,隐式使用public static final修饰

    • 接口所有方法都是公开抽象方法,隐式使用public abstract 修饰

    • 接口没有构造方法、动态代码块、静态代码块。

1.3、接口规范

  • 任何类在实现接口时,必须事先接口中所有的抽象方法,否则此类为抽象类。

  • 实现接口中的抽象方法时,访问修饰符必须是public。

1.4、接口引用

  • 接口同父类一样,接口也可以声明引用(不可实例化对象(new)),并指向显示类对象。

  • 仅可以调用接口中声明的方法(fly(接口) = Person(实例对象),fly不可以使用Person中的方法),不可调用实现类独有的方法。

  • 接口引用可强转回显示类本身类型,进行独有方法的调用。

  • 继承和实现同时存在,继承在前,实现在后。

1.5、接口的多态

  • 多种不同类型的引用指向同一个对象时,表示看待对象的视角不同。

  • 不同引用看到的对象范围不同,还能调用自身类型中所声明的部分。

public class TestPolymorpfic {
    public static void main(String[] args) {
        Dog myDog = new Dog();
        Animal a = myDog;
        Runnable r = myDog;
        Swimmable s = myDog;
        s.swim();
        r.run();
        a.sleep();
        myDog.shot();
    }
}
interface Runnable{
    void run();
}
interface Swimmable{
    void swim();
}
abstract class Animal{
    public  void eat(){}
    public  void sleep(){}
}
class Dog extends Animal implements Runnable,Swimmable{
    @Override
    public void eat(){}
    @Override
    public void swim(){}
    @Override
    public void run(){}
    public void shot(){}
​
}

  • 接口和接口之间可以多继承: 接口 extends 父接口1,父接口2,父接口n

1.6、接口回调

  • 接口回调:先有接口的使用者,后有接口的实现者

1.7、接口的好处

  • 程序的耦合度降低

  • 更自然的使用多态

  • 设计与实现完全分离

  • 更容易搭建程序框架

  • 更容易更换具体

1.8、常量接口

  • 将多个常用于表示状态或者固定值的变量,以静态常量的形式定义在接口中统一管理,提高代码可读性

1.9、标记接口

  • 接口没有任何成员,仅仅是一个标记。Serializable、Clonable。

1.10、JDK1.8接口变化

  • JDK1.8之后接口中可以包含静态方法和默认方法

  • 静态方法:不可被继承,通过接口名.方法名调用

  • 默认方法:可以被继承,也可以被重写,通过实现类调用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值