Java 学习和实践笔记(36):接口(interface)

面向对象的精髓,最能体现这一点的就是接口!

为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如C++、Java、C#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象。

接口就是一组规范,所有实现的类都要遵守。它是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。

在接口这个特殊类里,不再像上一节讲的普通的抽象类一样,还可以在抽象类里另外定义普通属性或者普通方法,在接口里不再允许如此,只允许有抽象方法。


接口是两个模块之间通信的标准,通信的规范。如果能把你要设计的模块之间的接口定义好,就相当于完成了系统的设计大纲,剩下的就是添砖加瓦的具体实现了。大家在工作以后,做系统时往往就是使用“面向接口”的思想来设计系统。


接口和实现类不是父子关系,是实现规则的关系。比如:我定义一个接口Runnable,Car实现它就能在地上跑,Train实现它也能在地上跑,飞机实现它也能在地上跑。就是说,如果它是交通工具,就一定能跑,但是一定要实现Runnable
接口。


示例代码:

package testInterface;

public interface Volant {
    /*public abstract final*/ int Fly_Hight =100;//默认有public abstract final,写不写都一样
    /*public abstract */ void fly() ;  //默认有public abstract 写不写都一样
}

interface Honest {
    void helpOther();
}

class GoodMan implements Honest{ //GoodMan类实现接口Honest

    @Override
    public void helpOther() {//类必须实现接品里的方法,也就是重写接口里的抽象方法,增加{}
        System.out.println("扶老人过马路!");
    }
}

class BirdMan implements Volant{

    @Override
    public void fly() {
        System.out.println("我在飞");
    }
}

class Angel implements Volant,Honest {//类同时实现两个接口的示例

    @Override
    public void fly() {
        System.out.println("Angel.fly");
    }

    @Override
    public void helpOther() {
        System.out.println("Angel.helpOther");
    }
}

class Plane implements Volant{ //用这个类是为了更好说明,接口可以更好的抽象出飞这个特征并方便地给所有类使用
                                //如果不用接口而用继承,就不能这样轻易做到。

    @Override
    public void fly() {
        System.out.println("飞机,在飞");
    }
}
package testInterface;

public class Test {
    public static void main(String[] args) {
        Angel a = new Angel(); // a可以使用Angel实现的两个接口里的方法以及常量
        a.fly();
        a.helpOther();
        System.out.println(Volant.Fly_Hight);

        Volant a2 = new Angel();//这里与前面讲的多态一样的道理
        a2.fly();//a2仍属于Volant类型,只能使用它的fly方法
        a2.helpOther();//不能使用属于Angelr的helpOther方法,如一定要使用需强制转型

        Volant a3 = new Volant();//接口本身不能创建实例


    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

复业思维20240108

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值