徐培成老师说,Interface和abstract到底哪里不一样

本文通过实例对比了接口(interface)和抽象类(abstract class)在Java编程中的不同应用,并介绍了如何利用抽象类来减少实现接口时的代码冗余。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

徐培成老师说,Interface和abstract到底哪里不一样!  

 在做swing 和awt编程的时候, 如果用Interface 那就累死了。

 应该用抽象类,去使用匿名内部类  new 抽象类(){},如果是接口的话就不能使用匿名内部类这种感觉了

 

这就是适配器模式 adapter模式

 

配器类

 

 这些空的方法是一种浪费,有时也是一种混乱。除非看过这些空方法的代码,程序员可能会以为这些方法不是空的。即便他知道其中有一些方法是空的,也不一定知道哪些方法是空的,哪些方法不是空的,除非看过这些方法的源代码或是文档。

 

 

 

  缺省适配模式可以很好的处理这一情况。可以设计一个抽象的适配器类实现接口,此抽象类要给接口所要求的每一种方法都提供一个空的方法。就像帮助了鲁智深的“上应天星”一样,此抽象类可以使它的具体子类免于被迫实现空的方法。

 

public interface 和尚 {

    public void 吃斋();

    public void 念经();

    public void 打坐();

    public void 撞钟();

    public void 习武();

    public String getName();

}

 

public class 鲁智深 implements 和尚{

    public void 习武(){

        拳打镇关西;

        大闹五台山;

        大闹桃花村;

        火烧瓦官寺;

        倒拔垂杨柳;

    }

    public String getName(){

        return "鲁智深";

    }

}

 由于鲁智深只实现了getName()和习武()方法,而没有实现任何其他的方法。因此,它根本就通不过Java语言编译器。

众僧说:“此人形容丑恶、相貌凶顽,不可剃度他",但是长老却说:”此人上应天星、心地刚直。虽然时下凶顽,命中驳杂,久后却得清净。证果非凡,汝等皆不及他。”

 原来如此!看来只要这里也应上一个天星的话,问题就解决了!使用面向对象的语言来说,“应”者,实现也;“天星”者,抽象类也。

 

public abstract class 天星 implements 和尚 {

    public void 吃斋(){}

    public void 念经(){}

    public void 打坐(){}

    public void 撞钟(){}

    public void 习武(){}

    public String getName(){

        return null;

    }

}

 

public class 鲁智深 extends 和尚{

    public void 习武(){

        拳打镇关西;

        大闹五台山;

        大闹桃花村;

        火烧瓦官寺;

        倒拔垂杨柳;

    }

    public String getName(){

        return "鲁智深";

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值