`

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

    博客分类:
  • Java
 
阅读更多

徐培成老师说,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 "鲁智深";

    }

}

 

分享到:
评论
1 楼 spiniper 2014-12-16  
你说的那个老师有那么说么?如果是,我只能说那个老师不懂,接口也可以匿名内部类的,只是接口没有实现,所有方法都要实现而已。

相关推荐

    【IT十八掌徐培成】Java基础第17天-01.GUI编程.zip

    Java图形用户界面(GUI,Graphical User Interface)编程是Java开发者必须掌握的一项技能,尤其是在开发桌面应用程序时。...通过徐培成老师的教程,你可以逐步掌握这些关键知识点,为自己的Java编程技能添砖加瓦。

    【IT十八掌徐培成】Java基础第02天-01.java关键字.zip

    Java编程语言是面向对象的、跨平台的编程语言,由Sun ...在"【IT十八掌徐培成】Java基础第02天-01.java关键字"这个视频教程中,徐培成老师将详细讲解这些关键字的使用场景和注意事项,对于初学者来说是一份宝贵的资源。

    【IT十八掌徐培成】Java基础第17天-04.多线程复制-1avi.zip

    在IT领域,尤其是在Java编程中,多线程是不可或缺的一部分,尤其对于大型、高并发的应用程序来说更是如此。本资源“【IT十八掌徐培成】Java基础第17天-04.多线程复制-1avi.zip”聚焦于Java中的多线程概念和实践,...

    十八掌 徐培成 2018 storm+笔记

    十八掌徐培成 storm 入门到精通视频讲解,总共5天,20个视频

    【IT十八掌徐培成】Java基础第25天-01.反射基础.zip

    徐培成老师的课程将会详细讲解这些概念,并通过实例演示如何使用反射,帮助学习者理解反射的原理和应用,进一步提升Java编程能力。观看“Java基础第25天-01.反射基础.avi”视频,你将能够掌握如何在实践中灵活运用...

    IT十八掌徐培成HADOOP笔记

    ### IT十八掌徐培成HADOOP笔记解析 #### Hadoop概述 Hadoop是一个开源的分布式计算框架,它能够高效地处理大型数据集,并通过在集群中的多台计算机上分配数据来实现高度的并行性。Hadoop的核心组成部分包括HDFS...

    【IT十八掌徐培成】Hadoop第02天-01.Hadoop基础回顾-进程初识-webui.zip

    对于初学者来说,理解这些基础概念和使用Web UI进行监控是掌握Hadoop操作的关键步骤。 总之,Hadoop是一个强大的大数据处理工具,它的进程架构和Web UI监控对于有效管理和优化大数据环境至关重要。通过学习"IT十八...

    【IT十八掌徐培成】Java基础第09天-004.多线程-状态机变换.zip

    在IT领域,多线程是Java编程中一个重要的概念,特别是在设计高性能、高并发的应用时。...通过徐培成老师的讲解,学员可以深入理解多线程的概念,学会如何在实际项目中运用多线程技术,提升软件的并发性能。

    【IT十八掌徐培成】Java基础第03天-06.二维数组-三维数组-循环遍历.zip

    本课程由IT十八掌徐培成老师讲解,重点围绕Java中的二维数组、三维数组以及如何使用循环遍历这些数组展开。 一、二维数组 二维数组可以视为一个表格,它包含了一组行和列,每个元素都有特定的行索引和列索引。在...

    【IT十八掌徐培成】Java基础第25天-06.JVM结构1.zip

    在"【IT十八掌徐培成】Java基础第25天-06.JVM结构1"的课程中,我们将会深入探讨JVM的内部结构,了解它是如何使得Java具有跨平台特性的。 首先,JVM可以分为以下几个主要部分: 1. **类加载器(ClassLoader)**:它...

    徐培成大数据培训教程

    本人也是大数据开发者,就是一路上从JAVA提升到大数据,这教程就是按这流程一步步深入学习,适合自学大数据的同学哈

    【IT十八掌徐培成】Hadoop第01天-05.hadoop伪分布式2.zip

    【IT十八掌徐培成】Hadoop第01天-05.hadoop伪分布式2.zip 这个压缩包文件主要涵盖了Hadoop技术中的一个重要概念——伪分布式模式。在深入讲解这个主题之前,我们先来理解一下Hadoop是什么。Hadoop是一个开源的、基于...

    【IT十八掌徐培成】Java基础第15天-01.File操作-递归访问文件夹.zip

    在"【IT十八掌徐培成】Java基础第15天-01.File操作-递归访问文件夹.zip"这个课程中,徐培成老师可能详细讲解了如何利用File类进行文件和目录的递归访问。递归访问是指在遇到目录时,不仅访问当前目录下的文件,还...

    【IT十八掌徐培成】Java基础第22天-04.JDBC基础.zip

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与关系数据库交互的一组接口和类,由Sun Microsystems开发并随Java SE一起发布。JDBC提供了一种标准的API,使得Java开发者能够连接各种不同类型的...

    徐培成Struts2视频教程(18集)

    资源名称:徐培成Struts2视频教程(18集)资源目录:【】Struts2(徐培成)1-3【】Struts2(徐培成)10-12【】Struts2(徐培成)13-15【】Struts2(徐培成)16-18【】Struts2(徐培成)4-6【】Struts2(徐培成)7-9【】徐培成...

    【IT十八掌徐培成】Java基础第05天-03.抽象类-抽象方法-修饰符组合.zip

    在徐培成老师的课程中,他可能还会涉及接口(Interface)与抽象类的对比,以及在实际开发中的应用场景选择。接口是另一种形式的抽象,它可以包含抽象方法和常量,但不允许有任何实现。接口的多重继承特性使其在某些...

    IT十八掌徐培成大数据培训资料

    精心规划,课程涵盖Hadoop大数据生态圈全方位剖析,做到知识无死角,挑战高薪大数据职位; 循序渐进,由浅入深学习大数据技能,大数据处理技术方方面面一览无余,积跬步以至千里。 企业案例,理论与实际相结合,技术...

    【IT十八掌徐培成】Java基础第17天-02.GUI编程-editor-dialog.zip

    在本教程中,徐培成老师深入浅出地讲解了如何在Java中创建和使用GUI组件。 首先,Java GUI编程的基础是AWT(Abstract Window Toolkit)和Swing库。AWT是Java早期提供的GUI框架,它依赖于操作系统提供的窗口系统,...

    【IT十八掌徐培成】Java基础第11天-01.Map集合.zip

    在本课程“【IT十八掌徐培成】Java基础第11天-01.Map集合”中,徐培成老师深入讲解了Map集合的相关概念、特性和实际应用。 Map接口不继承Collection接口,而是直接继承了Iterable接口,这意味着我们不能通过迭代器...

Global site tag (gtag.js) - Google Analytics