Java 接口理论篇

接口的两层含义:接口作为数据类型   狭义的接口  接口的第二层含义:工具 广义的接口

在接口中所有的变量都是静态常量 在接口中所有方法都是抽象方法

定义一个接口使用关键字:interface 一个类要实现一个接口使用关键字:implements

类与类之间的关系叫做继承 类与接口之间的关系叫做实现 一个类可以实现多个接口

01.预习

如何编写接口?

解析:

Public interface IFly{

   Public void fly();

}

接口有哪些特性?(说出2个)

解析:代表一种能力,代表一种规范

C#接口与Java接口的区别有哪些?(说出2个)

解析 : 01.C#中接口中方法不用访问修饰符

        02.Java接口中属性是静态常量。

        Public static int num=5;

以下为第一节课程的复习

02.接口定义

01.接口是一种规范,约束实现该接口类中方法的签名(方法名,参数列表和返回值)

02.public interface Door{

//公有的抽象方法

Public void test();

//字段必须是公有的静态的常量

Public int age=0;

}

Public class FDDoor implements Door,Lock{

  Public void test(){

  }

}

03.Java中三种多态实现方案

方案一:父类是一个普通类Parent,类中一个普通方法test()

子类Child继承父类,子类中有一个同名方法test()

Parent p=new Child();

P.test();//子类方法

方案二:父类Parent是抽象类,有一个抽象方法test()

子类Child继承抽象类,重写了test()

Parent p=new Child();

P.test();//子类方法

方案三:定义一个接口Parent,接口中有一个方法test()

子类实现该接口,重写了test()

Parent p=new Child();

P.test();//子类方法

我的无奈你永远不懂,因为我是抽象类。

坦白的说,抽象类存在真的很不容易。在接口没有出生的时候,抽象类还可以大言不惭的说我是规范的制定者,但是背后传来一个声音,你只会比手画脚,发号施令,从来都不干实事(没有方法体啊)。于是抽象类就这样被埋没了。既然这样,抽象接着毅然决然的寻找着自己的闪光点。但是一个个日出 换来了日落,今天的抽象类依然是抽象类。依然不可以昂头挺胸,气宇轩昂的向JVM索要空间~因为抽象类永远只能new别人,这或许就是《抽象类的伤心》吧!虽然经过种种伪装之后,抽象类可以有所谓的对象,例如,通过静态手段,通过子类等,但是,抽象类心里清楚,如果创建这样的对象,自己宁可不要。于是,抽象类再次倔强的谢绝了自己成为对象这个事实。然而,抽象类的伤心谁能知道,看到一个一个类都new出了自己的幸福,抽象类依然在默默的寻找着自己的亮点。虽然这是一条披满荆棘的漫漫长路,但是就像他喜欢的一句话:把握现在,珍惜当下,做真实的自己。真的希望,有一天,抽象类可以拿着麦克风大声说,其实我是一个有用的类。我不只是别人的嫁衣,别人的陪衬。

难道在面向接口编程的今天,我抽象类真的就没有天日可见了吗,就因为我不能多继承吗?我不服。抽象类有自己的构造函数,但是却不能new,这种无奈谁又能懂?难道抽象类的存在只是为了子类吗?

然而恰恰抽象类就处于这样一个尴尬的境地。

****************************************************************************

04.接口的注意事项

01.接口不能实例化,因为接口是比抽象类抽象程度更好的类型

02一个类如果实现了某个接口,必须重写该接口中的所有方法

03.接口不能有构造,但是抽象类可以有

04.接口中所有方法都公有的抽象方法

05.接口中的所有字段必须都是公有的静态常量

06.接口本身也是一种数据类型

07.接口只是为实现它的类定义了规范,保证实现类方法签名和接口中对应方法一致。

08.通过接口可以实现多继承

09.一个借口中最好只定义一个方法,防止接口污染

05.抽象类和接口的区别

01.抽象类中可以有普通方法,接口中不能

02.抽象类可以有构造,接口不能

03.抽象类中可以有普通字段,而接口中不行

04.抽象类不能实现多继承,接口可以

05.符合is a关系的选用抽象类,符合has a关系的选用接口

05.接口比抽象类抽象程度更高

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

java提高篇之抽象类与接口

抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持有很大的相似,甚至可...

563
来自专栏个人随笔

房上的猫:人机猜拳项目

1.首先定义成员变量: int select1;// 人 选择 int select2;// 角色 选择 String choice1;...

3067
来自专栏互联网大杂烩

6大设计原则

所有引用基类的地方必须能透明地使用其子类对象。 只要父类能出现的地方子类就可以出现。

733
来自专栏算法修养

接口和多态性

如果你又加了一个百度外卖,那么eat函数中又要new 一个BaiDu() ,给开发带来麻烦。我们希望的是,如果代码要扩展了,那么代码要尽最大可能的进行很小的改动...

733
来自专栏java学习

面试题4(父类构造函数是优先于子类构造函数运行吗)

下面程序代码运行结果是什么? class MyTest extends Test { public MyTest() { system.out.printin(...

3166
来自专栏Java面试笔试题

简述一下你了解的设计模式

所谓设计模式,就是一套被反复使用的代码设计经验的总结(情境中一个问题经过证实的一个解决方案)。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠...

454
来自专栏Java学习网

Java中提高代码复用性的方法及规范总结

一个好的程序员一定是用最少的代码实现最多的功能,代码复用是程序员所追求和期望的,这也是Java语言所提倡的;根据以往开发经验整理了一些能够提高代码复用性方法和规...

2547
来自专栏陈树义

大白话说Java动态代理:一个面包店的动态代理帝国

代理模式是设计模式中非常重要的一种类型,而设计模式又是编程中非常重要的知识点,特别是在业务系统的重构中,更是有举足轻重的地位。代理模式从类型上来说,可以分为静...

3054
来自专栏JetpropelledSnake

Python面试题之Python中type和object的关系

下面是jeff kit的回答: 给别人讲解过很多次,但写成文字是第一次。试一试吧,自己主要也是看了这篇文章(Python Types and Objects...

371
来自专栏ImportSource

是时候忘掉finalize方法了

故事要从jdk11 early access版说起。 近日,发现jdk11发布了一个早鸟版。心想,jdk10刚刚发布没多久(JDK10要来了:下一代 Java...

3578

扫描关注云+社区