Java接口

接口在Java中是一种规范,定义了类需要遵循的规则。它包括静态和默认方法,以及常量。类可以实现多个接口,以弥补单继承的限制。接口间的继承支持多继承。文章通过示例展示了接口的使用,包括接口的实现、多态性以及接口与抽象类的区别。
摘要由CSDN通过智能技术生成

接口

接口的概念:接口就是规范,定义的是一组规则,体现了现实世界中“如果你是/要...则必须能.."的思想。继承是一个"是不是”的is-a关系,而接口实现则是"能不能”的has-a 关系。

1.接口的理解:接口的本质是契约、标准、规范,就像我们的法律一样。制定好后大家都要遵守。

2.定义接口的关键字:interface

3. 接口内部结构的说明

>可以声明

属性:必须使用public static final修饰

方法:jdk8之前,声明抽象方法,修饰为public abstract

         jdk8:声明静态方法、默认方法

         idk9:声明私有方法

>不能声明构造器,方法块

package Test0607;

public class InterfaceTest {
    public static void main(String[] args) {

        System.out.println(Flyable.Min_SPEED);
        System.out.println(Flyable.MAX_SPEED);

        Bullet b1 = new Bullet();
        b1.fly();
        b1.attack();

        //接口的多态性
        Flyable f1 = new Bullet();
        f1.fly();//f1只能调用FLyable的方法
    }

}

interface Flyable{ //接口
    //全局变量
    //全局变量
    public static final int Min_SPEED = 0;
    int MAX_SPEED = 7900;

    //方法可以省略public abstract 声明
    void fly();//抽象方法
}

interface Attackable{//接口
    public  abstract void attack();

}

class Bullet implements Flyable ,Attackable{

    public void fly(){
        System.out.println("让子弹飞一会儿");
    }

    public void attack(){
        System.out.println("子弹可以击穿身体");
    }
}
//测试接口的继承关系
interface AA{
    void method1();
}

interface BB{
    void method2();
}
interface CC extends AA,BB{//子接口

}
class DD implements CC{
    public void method1(){
        System.out.println("接口一实现");
    }
    public void method2(){
        System.out.println("接口二实现");
    }
}

4接口和类的关系:实现关系

5.格式:class A extends SuperA implements B,C{}

A相较于SuperA来进,叫做子类

A相较于B,C来讲,叫做实现类。

6.满足此关系之后,说明:

>类可以实现多个接口。

>类针对于接口的多实现,一定程度上就弥补了类的单继承的局限性。

>类必须将实现的接口中的所有的抽象方法都重写(或实现),方可实例化。否则,此实现类必须声明为抽象类

>>>接口相当于父类,一个方法可以实现多个接口(继承)<<<

class DD implements CC{
    public void method1(){
        System.out.println("接口一实现");
    }
    public void method2(){
        System.out.println("接口二实现");
    }
}

7.接口与接口的关系:继承关系,且可以多继承

interface AA{
    void method1();
}

interface BB{
    void method2();
}
interface CC extends AA,BB{//子接口

}

8..接口的多态性: 接口名 变量名 = new 实现类对象

 //接口的多态性
        Flyable f1 = new Bullet();
        f1.fly();     //f1只能调用FLyable的方法 

区分抽象类和接口

>共性,都可以声明拍象方法

都不能实例化

>不同:1.抽象类一定有构造器。接口没有构造器

2.类与类之间继承关系,类与接口之间是实现关系,接口与接口之间是多继承关系

 

测试: 测试接口的应用、规范、多态

package Test0607;

public class USBTest {
    public static void main(String[] args) {
        Computer c1 = new Computer();
        Printer p1 = new Printer();

        System.out.println("创建接口实现类的对象");
        //创建接口实现类的对象
        c1.transferData(p1);//多态性
        System.out.println();
        System.out.println("创建接口实现类的匿名对象");

        //创建接口实现类的匿名对象
        c1.transferData(new Camera());
        System.out.println();
        System.out.println("创建 接口匿名 实现对象");

        //创建 接口匿名 实现对象
        USB u1 = new USB(){
            public void Start(){
                System.out.println("U盘开始工作");
            }
            public void Stop(){
                System.out.println("U盘结束工作");
            }
        };
        System.out.println();
        System.out.println("创建 接口匿名 实现匿名对象");

        //创建 接口匿名 实现匿名对象
        c1.transferData(new USB() {
            @Override
            public void Start(){
                System.out.println("扫描仪开始工作");
            }
            public void Stop(){
                System.out.println("扫描仪结束工作");
            }
        });

        
        c1.transferData(u1);
    }

}
class Computer{
    public void transferData(USB usb){
        System.out.println("连接成功....");
        usb.Start();

        System.out.println("数据传输的细节操作....");

        usb.Stop();
    }
}
class Camera implements USB{
    public void Start(){
        System.out.println("相机开始工作");
    }
    public void Stop(){
        System.out.println("照相机结束工作");
    }
}
class Printer implements USB{
    public void Start(){
        System.out.println("打印机开始工作");
    }

    public void Stop(){
        System.out.println("打印机结束工作");
    }
}
interface USB{
    //声明
    //USB长、宽、高》》》常量


    //方法
    public abstract void Start();

    public abstract void Stop();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值