美文网首页
JAVA8:abstract抽象类与抽象函数以及interfac

JAVA8:abstract抽象类与抽象函数以及interfac

作者: DuTel | 来源:发表于2018-12-27 13:02 被阅读0次

关于抽象方法:

1.注意区分无方法体和空方法体
abstract void eat();是可以接受的
abstract void eat(){} 这是错误的
2.抽象方法必须定义在抽象类中,而抽象类中不一定有抽象方法
3.抽象类不可实例化,因为是抽象的。但在抽象类中有构造函数,该构造函数对父类数据的初始化
4.抽象类的子类有两种:A 子类是一个抽象类,不重写方法
B 子类是具体类,重写所有抽象方法

接口中的一些知识点:

1.接口中的方法自带public static关键字
2.接口中成员变量只能是常量
3.Java中的多继承---->接口与接口之间的关系可以是多继承的

重点:接口与抽象类本质上的不同
抽象类描述的是这群事物的共性,而接口更着重描述事物的拓展功能
我个人的理解是接口更强调那些“新的”“有点特别”“不一定具有普遍的共同性”的功能


另外今天在博客上发现了一个很棒的解释
(以下为转载内容,感谢@beiai1014的分享!!!!!!http://blog.csdn.net/beiai1014/article/details/1561814):

java 的接口到底起什么作用?

1、从书中看到的是java程序的接口中只定义了常量及空方法,空的方法有什么用呢?还要在类中写方法体,那还要接口干什么?

2、一个程序中写了2个接口,并在同一个类中写方法体,这与多继承有什么关系。

3、包中那些已定义的接口,怎么知道那里面定义了什么方法。

说到底,接口有什么实际意义,哪本书都不讲,一味的讲是多继承,不结合实际实在不好懂。

Madai的理解是:
  java接口的用处主要体现在下面几个方面:

(1)通过接口可以实现不相关类的相同行为,而不需要了解对象所对应的类。

(2)通过接口可以指明多个类需要实现的方法。

(3)通过接口可以了解对象的交互界面,而不需了解对象所对应的类。

Clkrst给出了更详细的解释:
  类描述了一个实体,包括实体的状态,也包括实体可能发出的动作。

接口定义了一个实体可能发出的动作。但是只是定义了这些动作的原型,没有实现,也没有任何状态信息。

所以接口有点象一个规范、一个协议,是一个抽象的概念;而类则是实现了这个协议,满足了这个规范的具体实体,是一个具体的概念。

从程序角度,简单理解,接口就是函数声明,类就是函数实现。需要注意的是同一个声明可能有很多种实现。

所以就你的问题:
  1、接口中定义类方法的原型,但是不能说是空方法,因为空方法的意思是有实现体,只不过实现体是空操作。实际上接口没有定义任何实现体。具体的实现体都是在实现接口的类中,接口只是定义了这些方法的调用方式。

你当然也可以不用接口,直接在类里面写方法,但是如果你的一组方法需要在很多类里实现,那么把它们抽象出来,做成一个接口规范,不是更好么?

2、一个类描述了一个实体,这个实体可能是一个复杂的对象,它的动作很多,如果把这些动作分类,用接口a定义其中的某一组动作,接口b定义其中的另外一组动作,这样的结构,比较清楚。

这种方式具备了多继承的优点,避免了多继承的缺陷。实际上在历史上,接口在很大程度上,是为了解决多继承带来的种种问题而设计出来的。

3、包中那些已定义的接口,怎么知道那里面定义了什么方法。

>接口里定义了方法的输入输出,这些都是协议,具体的实现都在每个类中。对于很多只需要抽象接口的地方,不需要知道具体的类是什么,只要这个类实现了这个接口就可以了。

相关文章

  • JAVA8:abstract抽象类与抽象函数以及interfac

    关于抽象方法: 1.注意区分无方法体和空方法体abstract void eat();是可以接受的abstract...

  • 17.03.11 .Net基础(二)

    多态 虚方法 virtual override 抽象类 abstract override 接口 interfac...

  • java接口与抽象类的理解

    接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制 接口interfac...

  • Kotlin学习笔记(二)类的分类

    1.抽象类 抽象类用abstract关键字修饰,抽象类用abstract修饰的函数,就做抽象函数。抽象类中也可以有...

  • android 关键字记录

    abstract:抽象类interface:接口 相同点A. 两者都是抽象类,都不能实例化。B. interfac...

  • java -abstract类、接口

    abstract类(抽象类) abstract类(抽象类) ** abstract()方法** abstract类...

  • 抽象类和接口

    抽象类特点 抽象类和抽象方法都需要使用abstract修饰抽象类 abstract class test{}。抽象...

  • 抽象类、接口、内部类总结

    抽象方法与抽象类 抽象方法与抽象类必须使用abstract修饰,有抽象方法的类只能被定义为抽象类,抽象类里可以没有...

  • 抽象类

    抽象类用abstract修饰,抽象方法也用abstract修饰抽象类的特点:1)用abstract修饰的类2)抽象...

  • 1.抽象类与接口

    抽象类(abstract) 接口(interface) kotlin中接口可以继承接口 java8之前接口方法是不...

网友评论

      本文标题:JAVA8:abstract抽象类与抽象函数以及interfac

      本文链接:https://www.haomeiwen.com/subject/busrlqtx.html