文档章节

java抽象类和接口类

一杯82年的JAVA
 一杯82年的JAVA
发布于 2016/05/07 16:23
字数 632
阅读 116
收藏 1

行业解决方案、产品招募中!想赚钱就来传!>>>

        接口和抽象类都能描述一般性的公有特征。一般来说,强是关系(strong is-a relationship)清晰地描述了父子关系,应该用类模拟,比如苹果是一种水果;而弱是关系(weak is-a relationship)是指对象具有某种属性,适合用接口模拟,比如苹果是可以吃的。

        由于子类只能扩展一个父类,而能实现多个接口,所以接口比抽象类更灵活。但是接口不能包括具体的方法,而抽象类可以,要将两种好处结合起来,可以创建一个接口和一个实现该接口的抽象类(便利类),然后根据情况决定使用哪个。

        接口不变性是指不改变接口的使用方法,但是可以改变接口的具体实现方法,而接口的实现对用户是透明的,用户不需要关心接口的实现,只要知道如何使用接口就行了,所以接口不变性为用户提供了便利。
        抽象类也一样,内部实现可以因为需要而更改(比如改进了算法),但是提供给用户的使用方法不要轻易改变

  小结

  1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。

  2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。

  3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。 

  4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。

  5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。

  6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。 

  7.接口中的方法默认都是 public,abstract 类型的。
一杯82年的JAVA
粉丝 8
博文 75
码字总数 36425
作品 0
杭州
程序员
私信 提问
加载中
请先登录后再评论。
Netty那点事(三)Channel与Pipeline

Channel是理解和使用Netty的核心。Channel的涉及内容较多,这里我使用由浅入深的介绍方法。在这篇文章中,我们主要介绍Channel部分中Pipeline实现机制。为了避免枯燥,借用一下《盗梦空间》的...

黄亿华
2013/11/24
2W
22
访问安全控制解决方案

本文是《轻量级 Java Web 框架架构设计》的系列博文。 今天想和大家简单的分享一下,在 Smart 中是如何做到访问安全控制的。也就是说,当没有登录或 Session 过期时所做的操作,会自动退回到...

黄勇
2013/11/03
3.5K
6
Flappy Bird(安卓版)逆向分析(一)

更改每过一关的增长分数 反编译的步骤就不介绍了,我们直接来看反编译得到的文件夹 方法1:在smali目录下,我们看到org/andengine/,可以知晓游戏是由andengine引擎开发的。打开/res/raw/at...

enimey
2014/03/04
6K
18
浅入浅出Android(003):使用TextView类构造文本控件

基础: TextView是无法供编辑的。 当我们新建一个项目MyTextView时候,默认的布局(/res/layout/activity_main.xml)中已经有了一个TextView: <TextView 运行效果如下: 修改其文本内容...

樂天
2014/03/22
658
1
Nutch学习笔记4-Nutch 1.7 的 索引篇 ElasticSearch

上一篇讲解了爬取和分析的流程,很重要的收获就是: 解析过程中,会根据页面的ContentType获得一系列的注册解析器, 依次调用每个解析器,当其中一个解析成功后就返回,否则继续执行下一个解...

强子哥哥
2014/06/26
712
0

没有更多内容

加载失败,请刷新页面

加载更多

15

15

不正经的大叔
30分钟前
7
0
如何在Python中附加文件? - How do you append to a file in Python?

问题: How do you append to the file instead of overwriting it? 您如何附加到文件而不是覆盖文件? Is there a special function that appends to the file? 有附加到文件的特殊功能吗?...

javail
58分钟前
6
0
每个程序员应阅读的最具影响力的单一书籍是什么? [关闭]

问题: If you could go back in time and tell yourself to read a specific book at the beginning of your career as a developer, which book would it be? 如果你可以回到过去并告诉自己......

技术盛宴
今天
5
0
Spring Cloud系列之微服务介绍

相信我,请认真读完,点开每一个链接,或许你才能真正了解什么是微服务?什么是分布式?什么是云计算?绝对没有多余! 1 微服务 微服务架构是“新常态”。构建小型的、自包含的、随时可以运行...

冯文议
今天
6
0
在Visual Studio中使用Git [关闭] - Using Git with Visual Studio [closed]

问题: As a long-time Visual SourceSafe user (and hater) I was discussing switching to SVN with a colleague; 作为一个长期的Visual SourceSafe用户(和仇恨)我正在讨论与同事转换到S......

富含淀粉
今天
26
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部