Java初识接口与类适配器

抽象类和接口区别

  • 使用方式
    抽象类:继承 extends
    接口:实现 implements

  • 成员变量
    抽象类:变量 常量
    接口:常量 默认 public static final 修饰

  • 成员方法
    抽象类:抽象方法 成员方法都可以
    接口:只能有抽象方法 静态方法 默认方法

  • 构造方法
    抽象类:有构造
    接口:没有

类与类之间关系
  • 单继承
  • 多层继承
类与接口之间关系
  • 单实现
  • 多实现
接口与接口之间的关系
  • 单继承
  • 多继承

JDK1.8 给接口添加了新特性

  • 静态方法: static 修饰

  • 默认方法: default 修饰
    1.实现类不强制重写
    2.实现类可以重写默认方法,但是不能使用default修饰
    3.默认方法的使用,参照多态的使用

接口中调用方法实例

public class Demo03 {
    public static void main(String[] args) {
        //  调用接口中静态方法
        InterF.staticFun();
        //  调用实现类中静态方法
        InterFImpl.staticFun();
        //  如何调用默认方法 多态形式创建对象
        InterF f = new InterFImpl();
        f.defaultFun();     
        InterFImpl fImpl = (InterFImpl)f;
        fImpl.test();
    }
}

interface InterF{
    //  抽象方法
    public abstract void fun();
    //  静态方法
    public static void staticFun() {
        System.out.println("我是接口中 ststicFun方法");
    }
    //  默认方法
    public default void defaultFun() {
        System.out.println("我是接口中 defaultFun方法");
    }
}

//  实现类
class InterFImpl implements InterF{
    @Override
    public void fun() {
        System.out.println("我是实现类中 fun方法");
    }
    //  手动重写接口中的默认方法
    @Override
    public void defaultFun() {
        System.out.println("我是实现类中 defaultFun方法");
    }

    //  静态方法
    public static void staticFun() {
        System.out.println("我是实现中 ststicFun方法");
    }

    //  成员方法
    public void test() {
        //  调用接口中静态方法
        InterF.staticFun();
        //  调用接口中默认方法
        InterF.super.defaultFun();
    }
}

类适配器模式

  • 对象适配器模式
  • 缺省适配器模式
    1.使用一个适配器类实现接口,实现接口中的所有方法,方法使用空实现
    2.用户的类,再来继承这个适配器类
    3.类可以进行选择性重写

适配器使用实例

interface JSF{
    public abstract void woTui();
    public abstract void paoBu();
    public abstract void youYong();
}

//  创建一个适配器类Adapter并实现接口
//  当类没有实际意义,不需要创建该类的对象时
//  可以声明为抽象类
class Adapter implements JSF{

    @Override
    public void woTui() {

    }

    @Override
    public void paoBu() {

    }

    @Override
    public void youYong() {

    }

}

class ZZ extends Adapter{
    public void PaoBU() {
        System.out.println("慢跑10分钟");
    }
}

你可能感兴趣的:(Java)