Java面向对象之接口interface 入门实例
发布日期:2021-08-14 18:04:28 浏览次数:3 分类:技术文章

本文共 6114 字,大约阅读时间需要 20 分钟。

一、基础概念

  (一)接口可以简单的理解为,是一个特殊的抽象类,该抽象类中的方法都是抽象的。

     接口中的成员有两种:1.全局常量 2.抽象方法

     定义接口用关键字interface,接口中的成员都用固定的修饰符public来修饰。

  (二)接口的特点:

    1、接口不可以实例化。

    2、接口的子类必须覆盖接口中的所有抽象方法后,才可以实例化。否则该子类是抽象类。

    3、接口是用来被实现的。

  (三)接口解决的问题:

    1.因为多继承调用的不确定性,java中是不直接支持多继承的,但可以通过接口来解决,将多继承转换成多实现。

    2.因为子类具备所属的父类体系的基本功能后,还想扩展一些其他功能。可以通过接口来完成。

    3.避免单继承的局限性。一个类继承另一个类的同时,还可以实现多个接口。

   (四)接口的思想:

    1.接口的出现扩展了功能。

    2.接口的出现其实就是暴露出来的规则。

    3.接口的出现降低了耦合性。(用于解耦)

    4.接口的出现,一方在使用接口,一方在实现接口。

  (五)类与接口的区别:

    1.类与类之间的关系是继承关系。

    2.类与接口之间的关系是实现关系。

    3.接口与接口的关系是继承关系,而且可以多继承。

    4.抽象类中可以定义抽象和非抽象方法。子类可以直接使用,或者覆盖使用。接口中定义都是抽象方法,必须实现后才能使用。

    5.类用于描述是事物的共性基本功能,接口用于定义的是事物的额外功能。

二、实例代码(一)

  1.定义接口子类SubInter_1,进行接口InterA的实现

  2.定义接口子类SubInter_2,进行接口InterA接口和InterB的多实现

  3.定义接口子类SubInter_3,继承Fu类还进行接口InterA的实现

  3.定义接口子类SubInter_4,继承Fu类还进行接口InterA和InterB的多实现

1 //定义父类Fu  2 class Fu   3 {  4     public void show1()  5     {  6         System.out.println("Fu show1 ......");  7     }  8 }  9  10 //定义接口InterA 11 interface InterA 12 { 13     public static final int num1 = 4;  //全局常量 14     public abstract void show2();  //抽象方法 15 } 16  17 //定义接口InterB 18 interface InterB 19 { 20     public static final int num2 = 6; 21     public abstract void show3(); 22 } 23  24 //定义接口子类SubInter_1,进行实现 25 class SubInter_1 implements InterA//子类SubInter1实现 InterA接口 26 { 27     public void show2() 28     { 29         System.out.println("SubInter_1 InterA show2 ......"); 30     } 31 } 32  33 //定义接口的子类SubInter_2,进行多实现 34 class SubInter_2 implements InterA,InterB//用子类SubInter2 多实现 InterA接口和Inter接口 35 { 36     public void show2() 37     { 38         System.out.println("SubInter_2 InterA show2 ......"); 39     } 40     public void show3() 41     { 42         System.out.println("SubInter_2 InterB show3 ......"); 43     } 44 } 45  46  47 //SubInter_3类继承了Fu类的基本功能,还实现了InterA接口的基本功能。 48 class SubInter_3 extends Fu implements InterA 49 { 50     public void show2() 51     { 52         System.out.println("SubInter_3 InterA show2 ......"); 53     } 54      55 } 56  57 //SubInter_4类继承了Fu类的基本功能,还实现了InterA接口和InterB接口的基本功能。 58 class SubInter_4 extends Fu implements InterA,InterB 59 { 60     public void show2() 61     { 62         System.out.println("SubInter_3 InterA show2 ......"); 63     } 64      65     public void show3() 66     { 67         System.out.println("SubInter_3 InterB show3 ......"); 68     } 69 } 70  71 class InterfaceDemo1  72 { 73     public static void main(String[] args)  74     { 75         //SubInter_1实例化 s1 76         SubInter_1 s1 = new SubInter_1(); 77         System.out.println(s1.num1); 78         System.out.println(SubInter_1.num1); 79         s1.show2(); 80          81         //SubInter_2实例化 s2 82         SubInter_2 s2 = new SubInter_2(); 83         System.out.println(s2.num1); 84         System.out.println(s2.num2); 85         System.out.println(SubInter_2.num1); 86         s2.show2(); 87         s2.show3(); 88          89         //SubInter_3实例化 s3         90         SubInter_3 s3 = new SubInter_3(); 91         System.out.println(s3.num1); 92         System.out.println(SubInter_3.num1); 93         s3.show1(); 94         s3.show2(); 95          96         //SubInter_4实例化 s4 97         SubInter_4 s4 = new SubInter_4(); 98         System.out.println(s4.num1); 99         System.out.println(s4.num2);100         System.out.println(SubInter_4.num2);101         s4.show1();102         s4.show2();103         s4.show3();104     }105 }

  代码执行

  

三、实例代码(二)

  1.定义接口InterB,继承接口InterA。并实现InterB

  2.定义接口InterD,继承接口InterB和接口InterC.并实现InterD

1 //定义接口InterA 2 interface InterA 3 { 4     public static final int num = 4; 5     public abstract void show1(); 6 } 7  8 //定义接口InterB,继承接口InterA 9 interface InterB extends InterA10 {11     public abstract void show2();12 }13 14 //定义接口InterC15 interface InterC 16 {17     public abstract void show3();18 }19 20 //定义接口InterD,继承接口InterB和接口InterC21 interface InterD extends InterB,InterC22 {23     public abstract void show4();24 }25 26 //定义接口子类SubInter,进行实现27 class SubInter_1 implements InterB28 {29     public void show1()30     {31         System.out.println("SubInter_1 InterA show1 ......");32     }33     34     public void show2()35     {36         System.out.println("SubInter_1 InterB show2 ......");37     }38 }39 40 //定义接口子类SubInter,进行实现41 class SubInter_2 implements InterD42 {43     public void show1()44     {45         System.out.println("SubInter_2 InterA show1 ......");46     }47     48     public void show2()49     {50         System.out.println("SubInter_2 InterB show2 ......");51     }52     53     public void show3()54     {55         System.out.println("SubInter_2 InterC show3 ......");56     }57     58     public void show4()59     {60         System.out.println("SubInter_2 InterD show4 ......");61     }62 }63 64 class InterfaceDemo265 {66     public static void main(String[] args) 67     {68         69         //SubInter_1实例化s1        70         SubInter_1 s1 = new SubInter_1();71         System.out.println(s1.num);72         s1.show1();73         s1.show2();74         75         //SubInter_2实例化s276         SubInter_2 s2 = new SubInter_2();77         System.out.println(s1.num);78         s2.show1();79         s2.show2();80         s2.show3();81         s2.show4();82     }83 }

  代码执行

  

四、实例代码(三)

  接口Inter中有4个方法,子类只想用其中的一个方法。

  用DemoA类实现接口Inter中的所有方法进行解决。

1 interface Inter 2 { 3     public abstract void show1(); 4     public abstract void show2(); 5     public abstract void show3(); 6     public abstract void show4(); 7 } 8  9 //为了方便创建Inter接口的子类对象,先创建一个DemoA类实现接口Inter。10 //因为Demo类创建对象没有意义。所以将该类抽象。11 abstract class DemoA implements Inter12 {13     public void show1(){}14     public void show2(){}15     public void show3(){}16     public void show4(){}17 }18 19 class DemoB extends DemoA20 {21     public void show1()22     {23         System.out.println("Inter show1 ......");24     }25 }26 27 class InterfaceDemo328 {29     public static void main(String[] args) 30     {        31         DemoB s1 = new DemoB();32         s1.show1();33     }34 }

  代码运行

  

 

 

  

 

转载于:https://www.cnblogs.com/zhuxr/p/8926490.html

转载地址:https://blog.csdn.net/weixin_30731305/article/details/100004591 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:想成为web开发大神?那你应该从拥有良好的代码规范走起!(JavaScript篇 - 第一篇)...
下一篇:static关键字

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年11月20日 11时45分58秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

matlab gui串口调试,matlab中GUI的串口调试程序(发送与接收,很全面) 2019-06-17
用matlab解方程二分法,matlab 01---解简单方程 方程组 二分法 2019-06-17
matlab工程计算及应用 课程名称,《matlab工程应用》课程教学大纲 2019-06-17
欧式距离余弦相似度matlab,相似度计算——欧氏距离,曼哈顿距离,闵可夫斯基距离,汉明距离,夹角余弦... 2019-06-17
姓名 是否合法 php,JavaScript实现输入名字的时候显示不合法的实现方法 2019-06-17
jsp嵌入vlc视频回放_JavaWeb快速进阶全套教程(程序员必备2020版):视频+笔记+源码... 2019-06-17
华为消息推送 有透传通道吗_5种华为推送样式,让您的消息推送既美观又实用... 2019-06-17
一个圆怎么平分三份_一个小小的易拉罐的制作过程竟然有这么多学问? 2019-06-17
amh 删除php5.2.17_从卵巢早衰到宫内好孕,amh0.44,我的怀孕经历 2019-06-17
信道容量受哪三个要素_怎么打造令人无法拒绝、无懈可击的成交主张,这八大要素熟记... 2019-06-17
干涉光强公式怎么计算_三相交流电怎么计算电功率?三相交流电功率计算公式... 2019-06-17
基于5g的交通运输_推动5G协同应用,助力交通运输新基建 2019-06-17
制度化规范化标准化精细化_精细化管理的两个阶段:手册化、信息化(上)博士德,吴宏彪... 2019-06-17
c语言 单词变复数_C语言基础知识归纳总结(干货) 2019-06-17
lda指令是什么意思_西门子200PLC中顺序控制指令的简单讲解 2019-06-17
rap2检测哪些接口在使用_气体检测仪在使用过程中应该注意哪些事项? 2019-06-17
邮件发送类_讲七:SpringBoot简单演示-异步/邮件/定时任务 2019-06-17
带参数_laravel 基础面试题偏交谈20201222laravel验证自定义返回信息打印带参数的sql... 2019-06-17
联想yoga触摸屏不能用的原因_为什么汉服不能用洗衣机洗?原因过于真实,很多人都不知道... 2019-06-17
axios nodejs 上传图片_Vue.js项目中使用axios上传图片等文件操作 2019-06-17