接口-----java

本文详细介绍了Java接口的概念,包括访问控制符、接口名、继承、常量和方法等特性。通过示例展示了如何使用接口实现多态,如Plane、Bird和SuperMan实现Flyable接口。接口在Java中起到了契约的作用,弥补了单继承的限制,提供了一种安全的多继承方式。此外,还讨论了接口与多继承的比较,指出接口在功能扩展上的优势。
摘要由CSDN通过智能技术生成
接口就是规范,定义的是一组规则,体现了现实世界中“如果你是...则必须你能....”的思想。
如果你是天使,则必须能飞。如果你是汽车,则必须能跑。接口的本质就是契约,就像我们人间
的法律一样,大家都要遵守。



接口定义说明:

1、访问控制符:只能是public或者默认。

2、接口名:和类名采用相同命名机制。

3、extends:接口可以多继承。

4、常量:接口中的属性只能是常量,总是:public static final 修饰,不写也是。

5、方法:接口中的方法只能是:public abstract。不写也是。



要点:

1、子类通过implements来实现接口中的规范。

2、接口不能创建实例,但是可用于声明引用变量类型。

3、一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的

4、JDK1.8(不含8)之前,接口中只能包含静态常量,抽象方法,不能有普遍性,构造方法,普通方法。

5、JDK1.8(含8)后,接口中包含普通的静态方法,默认方法

 验证:

/**
 * 使用接口,定义一个接口Flyable,让飞机、鸟、超人、导弹都实现该接口。接口表达的是has—a的关系
 * 而继承表达的是is—a的关系,飞机、鸟、超人、导弹不是一种事物,所以使用接口来实现
 */
public interface Flyable {
    //接口中只有常量,没有变量,常量都是全局静态常量
    public static final int num = 5;

    //接口的方法自动采用public abstract修饰,所有方法都是全局抽象方法
    public abstract void fly();
}

public class Plane implements Flyable{
    @Override
    public void fly() {
        System.out.println("飞机在飞......");
    }
}
public class Animal {
}
public class Bird extends Animal implements Flyable{

    @Override
    public void fly() {
        System.out.println("鸟在飞.....");
    }
}
public class SuperMan implements Flyable{

    @Override
    public void fly() {
        System.out.println("超人在飞......");
    }
}
public class Test {
    public static void main(String[] args) {
        Flyable plane = new Plane();
        showFly(plane);

        Bird bird = new Bird();
        showFly(bird);

        SuperMan sm = new SuperMan();
        showFly(sm);

        Flyable bird2 = new Plane();
        bird2.fly();
    }
    public static void showFly(Flyable fly){
        fly.fly();
    }
}

 运行结果:

 

总结 一:接口的组成

1、接口和数组、类、抽象类是同一层次的概念。

2、成员变量:接口中所有的变量都使用public static final修饰,都是全局静态常量

3、成员方法:接口中所有的方法都使用public abstract 修饰,都是全局抽象方法。

4、构造方法:接口不能new,也没有构造方法

5、接口做方法的形参,实参可以是该接口的所有实现类。


总结 二:接口和多继承

C++ 多继承

优点:可以从多个父类继承更多的功能
缺点:不安全

Java 单继承

优点:安全
缺点:功能受限
解决方案:采用接口,既安全,功能又强大,接口变相的使java实现了c++的多继承,又没有c++多继承
的不安全性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值