`
逆风的香1314
  • 浏览: 1436817 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

老紫竹JAVA基础培训(8),认识接口

阅读更多
 这讲我们来重点熟悉接口的使用,包括接口的声明,继承,属性的定义以及类的实现等。


原问地址:http://www.java2000.net/p11584

先看相关的代码

lession8/Lession8.java
  1. package lession8;
  2. import lession8.otherpackage.InterfaceOtherPackagePublic;
  3. /**
  4.  * 老紫竹JAVA基础培训(8),认识接口。<br>
  5.  * 
  6.  * 
  7.  * @author 老紫竹 JAVA世纪网(java2000.net)
  8.  * 
  9.  */
  10. public class Lession8 {
  11.   public static void main(String[] args) {
  12.     // 可以直接使用接口的属性
  13.     System.out.println(Test1.Number1);
  14.     // final类型是不能修改的
  15.     // Test1.Number2 ++;
  16.   }
  17. }
  18. /**
  19.  * 实现本package的接口
  20.  * 
  21.  * @author 老紫竹 JAVA世纪网(java2000.net)
  22.  * 
  23.  */
  24. class Test1 implements InterfaceSamePackage {
  25.   // 接口的方法必须是public的
  26.   // 虽然那面没写,但也是,这是规定
  27.   // 实现的方法也必须是public的
  28.   // 不写或者protected或者private都是错误的
  29.   @Override
  30.   public void testA() {
  31.   }
  32.   @Override
  33.   public void testB() {
  34.   }
  35. }
  36. /**
  37.  * 实现其它package的接口。<br>
  38.  * 对接口里面的方法实现同样必须是public的。
  39.  * 
  40.  * @author 老紫竹 JAVA世纪网(java2000.net)
  41.  * 
  42.  */
  43. class Test2 implements InterfaceOtherPackagePublic {
  44. }
  45. class Test3 implements InterfaceSamePackageAbstract {
  46.   @Override
  47.   public void testA() {
  48.   }
  49. }
  50. /**
  51.  * 类可以实现多个接口.<br>
  52.  * 即使那些接口之间已经存在继承关系也没问题。
  53.  * 
  54.  * @author 老紫竹 JAVA世纪网(java2000.net)
  55.  * 
  56.  */
  57. class Test4 implements InterfaceOtherPackagePublic,
  58.     InterfaceSamePackageAbstract, InterfaceSamePackageExtends {
  59.   // 你要实现的方法是这些接口要求实现的总和
  60.   // 也就是每个接口里的方法你都必须实现
  61.   // #######################
  62.   // #### 注意,############
  63.   // #######################
  64.   // InterfaceSamePackage 和 InterfaceSamePackageAbstract
  65.   // 我们有2个接口定义了各自的方法,但名字和参数(类型和顺序)完全相同
  66.   // 我们的实现只需要有一个就行了
  67.   // 如果2个接口要实现的功能不一样,强烈建议不要用相同的名字和参数
  68.   // 这属于设计问题,很严重的设计问题。
  69.   @Override
  70.   public void testA() {
  71.   }
  72.   @Override
  73.   public void testB() {
  74.   }
  75. }
  76. /**
  77.  * 如果你这个类只能实现所有接口的部分功能,可以用abstract类。<br>
  78.  * 
  79.  * @author 老紫竹 JAVA世纪网(java2000.net)
  80.  * 
  81.  */
  82. abstract class Test5 implements InterfaceOtherPackagePublic,
  83.     InterfaceSamePackageAbstract, InterfaceSamePackageExtends {
  84.   @Override
  85.   public void testB() {
  86.   }
  87. }
lession8/InterfaceSamePackage.java
  1. package lession8;
  2. /**
  3.  * 接口例子A.
  4.  * 
  5.  * @author 老紫竹 JAVA世纪网(java2000.net)
  6.  * 
  7.  */
  8. public interface InterfaceSamePackage {
  9.   // 接口里面声明的属性
  10.   // 默认必须是 public static final 的
  11.   // 无论你怎么写,结果都一样
  12.   // 不能使用 protected 修饰
  13.   // 以下几种写法无任何区别,结果都是一样的。
  14.   public static final int Number = 0;
  15.   int Number1 = 1;
  16.   public int Number2 = 2;
  17.   public final int Number3 = 3;
  18.   final int Number4 = 4;
  19.   static int Number5 = 5;
  20.   // 对象类型必须初始化。
  21.   public static final String name = "java2000.net";
  22.   void testA();
  23.   public void testB();
  24. }

lession8/InterfaceSamePackageAbstract.java
  1. package lession8;
  2. /**
  3.  * 其它package的default类型的接口。
  4.  * 
  5.  * @author 老紫竹 JAVA世纪网(java2000.net)
  6.  * 
  7.  */
  8. abstract interface InterfaceSamePackageAbstract {
  9.   public void testA();
  10. }
lession8/otherpackage/InterfaceOtherPackagePublic.java
  1. package lession8.otherpackage;
  2. /**
  3.  * 其它package的public类型的接口。
  4.  * 
  5.  * @author 老紫竹 JAVA世纪网(java2000.net)
  6.  * 
  7.  */
  8. public interface InterfaceOtherPackagePublic  {
  9. }
lession8/otherpackage/InterfaceOtherPackageDefault.java
  1. package lession8.otherpackage;
  2. /**
  3.  * 其它package的默认类型的接口。
  4.  * 
  5.  * @author 老紫竹 JAVA世纪网(java2000.net)
  6.  * 
  7.  */
  8. interface InterfaceOtherPackageDefault {
  9. }
lession8/InterfaceSamePackageExtends.java
  1. package lession8;
  2. import lession8.otherpackage.InterfaceOtherPackagePublic;
  3. /**
  4.  * 接口可以继承接口.<br>
  5.  * 请注意是extends 接口,不是implements.<br>
  6.  * 只有类(class)才能 implements 接口。<br>
  7.  * 一个接口可以同时继承多个接口。
  8.  * 
  9.  * @author 老紫竹 JAVA世纪网(java2000.net)
  10.  * 
  11.  */
  12. public interface InterfaceSamePackageExtends extends
  13.     InterfaceSamePackageAbstract, InterfaceSamePackage,
  14.     InterfaceOtherPackagePublic {
  15. }

测试,请注意每次测试后恢复现场。‘
1 尝试把接口的方法改成 protected 看看编译错误

2 尝试继承别的package的默认接口,看看编译错误

3 去掉 main方法里的那个注释,看看编译错误
  1.  Test1.Number2 ++; 
4 尝试在接口里声明一个对象属性,不初始化,看看编译错误


提示:
1 接口的方法都是public的,不能使用protected 修饰符


2 接口的属性都是 public static final 的,不允许修改


3 接口的对象属性必须初始化


差不多了,我能想到的关于接口的东西就这么多了,如果我以后发现了什么漏掉的,我会编辑这个帖子,并在回复里写上更新。

分享到:
评论

相关推荐

    跟老紫竹学Java-计数器项目源代码

    在本项目"跟老紫竹学Java-计数器项目源代码"中,我们主要学习如何使用不同的技术来实现一个简单的计数器功能,用于记录页面的访问次数。计数器是一个常见的应用场景,它能够帮助我们了解网站或应用的受欢迎程度。...

    老紫竹信息采集系统0.1版

    《老紫竹信息采集系统0.1版》是一款基于Spring框架和Lucene搜索引擎进行二次开发的信息采集工具。这款系统的设计理念在于提供一个轻量级、易于理解和操作的解决方案,使得开发者能够快速配置并启动对特定网站的数据...

    loadunner进行B/S测试的培训PPT下载-老紫竹

    【LoadRunner进行B/S测试的培训PPT下载-老紫竹】 LoadRunner是一款强大的性能测试工具,主要用于评估和优化应用程序的性能。在这个培训文档中,我们主要关注的是如何使用LoadRunner进行基于B/S(Browser/Server)...

    老紫竹网页采集系统,令你一看就上手的搜索引擎

    老紫竹网页采集系统是一款专为初学者设计的搜索引擎开发工具,它简化了网页数据抓取的复杂过程,使得用户可以快速理解并实践搜索引擎的基本原理。这个系统的特点在于其易于理解和操作,即使对于编程经验不多的用户,...

    信息采集系统(老紫竹搜索引擎0.4 测试版 包括了部分B/S程序 )

    1 完全基于人工收录,每个被收录的帖子都是我们认为不错的。 2 任何人都可以加入,别人也可以分享到你加入的内容 3 收录的内容,不是简单的抓取,而是只收录里面最有用的部分,比如主题,内容...(版权归老紫竹所有)

    紫竹手机下载系统(含MP3切割组合功能)

    紫竹手机下载系统的出现,迎合了这一需求,特别是其独具特色的MP3切割组合功能,为用户提供了更为个性化和创意性的音频处理方案。本文将对紫竹手机下载系统进行详细解析,探讨其核心功能以及使用方法,旨在让更多的...

    java解析pdf

    - PDFBox支持Java 8及以上版本。 - 考虑性能时,注意合理使用流式处理,避免一次性加载整个大文件到内存。 通过以上内容,你应该已经掌握了使用Java和Apache PDFBox库解析PDF文件的基本概念和操作。请确保根据...

    老紫竹网页采集系统

    老紫竹网页采集系统=================安装配置-------1 程序我就不说了2 配置文件 applicationContext.xml 里面有详细的注释3 已经包含了CSDN论坛、博客园、新浪博客、百度Hi的解析参数需要的类库---------1 Spring ...

    普陀山紫竹林导游词介绍5篇精选.doc

    普陀山紫竹林导游词介绍5篇精选.doc

    2021-2022收藏的精品资料2021-2022年006物业管理人员培训计划课件.doc

    【紫竹物业管理人员培训计划】是南京紫竹物业管理有限公司针对其员工制定的一项系统性人才培养策略。该计划强调了培训在企业发展中的重要性,认为人才的竞争是企业竞争的核心,而有效的培训能够提升员工的整体素质,...

    紫竹国际教育园区.docx

    紫竹国家高新技术产业开发区是园区的基础,拥有交通大学和华东师范大学两大知名学府,以及众多国家级实验室和研发中心。区内聚集了英特尔、微软、印孚瑟斯等全球知名高科技企业的研发中心,形成了以集成电路与软件、...

    紫竹本地影音文件速查器V1.0绿色免费版

    紫竹本地影音文件速查器是款针紫竹影音打造的本地音频文件查看工具。用户可以通过这款软件快速找到想要的影音文件,欢迎下载 【软件特色】  1.软件功能简单,但是非常的使用  2.省去了复杂的安装过程,解压即用...

    Java5、6、7_API_帮助文档.rar

    Java 5、6、7 API 帮助文档是Java开发者的重要参考资料,涵盖了这三个关键版本的Java开发工具集(JDK)的详细功能和接口。这些API文档以CHM(Compiled Help Manual)格式提供,是一种常见的Windows平台上的帮助文件...

    紫竹慧:2019年年度报告.PDF

    星火站作为北京七大交通枢纽之一,其设计融合了丰富的北京历史文化元素,紫竹慧为该项目提供了7台6515和2台7530塔机的租赁及安装服务,其专业服务为项目的顺利进行提供了坚实的基础。 宜宾临港长江大桥的建设也是...

    品质培训管理培训.pptx

    \n\n针对紫竹物业管理有限公司的现状,公司自2002年以来多元化发展,管理物业多样,人员素质各异,虽然在2005年建立了管理体系,但仍面临诸多挑战,如总部与分公司的接口问题、服务质量标准不明确、管理效率低下等。...

    紫竹桩基:2018年年度报告.PDF

    辽宁紫竹桩基础工程股份有限公司(简称“紫竹桩基”,股票代码:830894)的2018年年度报告,全面展示了公司在过去一年的经营状况、财务数据、管理层分析以及未来发展计划。报告内容涵盖了一系列关键领域,包括公司...

    Java高级架构师九个阶段

    在这一阶段,重点在于掌握Java语言的基础知识,包括但不限于变量、数据类型、控制结构(循环、分支)、类与对象等。此外,还需熟悉面向对象编程的基本概念如封装、继承、多态等。通过大量的练习,加深对Java语法的...

Global site tag (gtag.js) - Google Analytics