Java编程那些事儿70——抽象类和接口(三)

8.9.3 抽象类和接口的比较

抽象类和接口都是进行面向对象设计时专用的设计结构,在实际进行项目设计时,经常需要考虑的问题就是——“使用抽象类还是接口”?下面通过对于抽象类和接口进行简单的比较,熟悉两者之间的区别和联系,从而在实际设计时使用恰当的结构。

1.什么时候使用抽象类或接口?

当设计中为了规范类中方法声明的结构(即类的行为)时,使用抽象类或接口。也就是强制子类对外部提供统一的方法声明时,使用抽象类或接口。

2.抽象类和接口的区别(不同点)

a)抽象类是类,而接口是接口。

因为抽象类是一个类,所以类内部可以包含的内容(构造方法、方法和属性等)在抽象类内部都可以存在,当然抽象类也受到类的单重继承的限制。而接口是接口类型,所以接口内部只能包含常量属性和抽象方法,但是一个类可以实现多个接口,所以接口不受类的单重继承的限制。

b)抽象类内部可以包含实体方法,而接口不能

抽象类是一个类,所以在抽象类内部既可以包含抽象方法也可以包含实体方法,而接口内部的每个方法都必须是抽象方法。

c)抽象类可以继承类,而接口不能

抽象类是一个类,所以在设计时可以使抽象类继承其它的类,在已有类的基础上进行设计,但是接口不能继承类。

3.抽象类和接口的联系(相同点)

a)抽象类和接口都可以声明对象,但是都只能使用子类的构造方法进行创建。

b)抽象类和接口内部都可以包含抽象方法。

按照Java语言的语法,子类在继承抽象类或实现接口时,都必须覆盖这些抽象方法,否则必须声明为抽象类。

c)抽象类和接口都可以代表一种类型,从而可以统一子类对象的类型,获得良好的可扩展性。

4.什么时候使用抽象类?

当满足以下的条件时,最好使用抽象类进行设计:

a)子类不继承其它父类

b)子类中存在完全相同的功能实现的方法

c)子类中存在相同的属性

d)设计出的结构需要继承其它类

当需要满足d条件时,只能使用抽象类,否则也可以考虑使用接口实现。

时间: 2024-11-25 13:22:37

Java编程那些事儿70——抽象类和接口(三)的相关文章

Java编程那些事儿68——抽象类和接口(一)

在实际的项目中,整个项目的代码一般可以分为结构代码和逻辑的代码.就像建造房屋时,需要首先搭建整个房屋的结构,然后再细化房屋相关的其它的结构,也像制造汽车时,需要首先制作汽车的框架,然后才是安装配件以及美化等工作.程序项目的实现也遵循同样的道理. 在项目设计时,一个基本的原则就是--"设计和实现相分离".也就是说结构代码和逻辑代码的分离,就像设计汽车时只需要关注汽车的相关参数,而不必过于关心如何实现这些要求的制作.程序设计时也是首先设计项目的结构,而不用过多的关系每个逻辑的代码如何进行实

Java编程那些事儿69——抽象类和接口(二)

8.9.2 接口 接口(Interface)是一种复合数据类型. 至此,Java语言的所有数据类型介绍完了,下面进行一个简单的总结.Java语言的数据类型分为两大类:基本数据类型和复合数据类型,其中基本数据类型有8种,复合数据类型包括数组.类和接口,由于开发过程中可以根据需要声明新的复合数据类型,所以复合数据类型的数量有无限个. 接口的概念,现实中使用的也很多,例如大家经常使用的U盘,则需要和计算机上的USB接口匹配使用,而且USB设备中除了U盘以外还有很多,例如USB风扇.USB数据线.USB

Java编程那些事儿52—方法声明

第七章 方法 方法(method),在面向过程的语言中称作函数(function),在汇编语言中称作子程序,是一个代码功能块,实现某个特定的功能.在实际的程序开发中,方法是一种基础的组织代码的方式.本部分就介绍方法相关的概念.相关语法以及实际使用时需要注意的问题. 7.1 方法概述 方法的概念来源于数学上的函数,在数学中,当数据具有一定的规律时,就是用一个函数来代码该数字的规律,例如f(n)=n则代表1.2.3.--这样的一个数列.在数学上n是参数,对于确定的n值只有一个f(n)的值和它对应.

Java编程那些事儿25—位运算符

4.5 二进制运算符 由于计算机内部的数据都以二进制的形式存在,所以在Java语言中提供了直接操作二进制的运算符,这就是下面要讲解的位运算符和移位运算符. 使用二进制的运算符,可以直接在二进制的基础上对数字进行操作,执行的效率比一般的数学运算符高的多,该类运算符大量适用于网络编程.硬件编程等领域. 二进制运算符在数学上的意义比较有限. 在Java代码中,直接书写和输出的数值默认是十进制,Java代码中无法直接书写二进制数值,但是可以书写八进制和十六进制数字,八进制以数字0开头,例如016,十六进

Java编程那些事儿3——你适合学习程序设计吗?

 Java编程那些事儿3--你适合学习程序设计吗?作者:陈跃峰出自:http://blog.111cn.net/mailbomb          程序设计是一个技术活,所以不是适合所有的人.现在很多人听说程序设计人员待遇如何如何的好,都一窝蜂的来学习程序,其实这个现象很不正常,因为程序不一定适合你.其实对于一个人来说,适合你的才是最好的.         就像现在很多小孩子都被家长逼着去学钢琴啊什么,有些小孩根本没有艺术细胞的,所以学习的效果就是差强人意了.         其实程序设计最需要

Java编程那些事儿4——如何学好程序设计?

  Java编程那些事儿4--如何学好程序设计?作者:陈跃峰出自:http://blog.111cn.net/mailbomb          俗话说"兴趣是最好的老师",但是只靠兴趣是远远不够的,还需要付出艰辛的努力.程序设计是一种技能,需要在较短的时间内学会,就不能像学习汉语一样,通过十几年甚至更长的时间来学好,也不能像英语那样进行业余学习,以至很多大学毕业的人英语水平也不敢恭维,也达不到实用的程度.         那么如何学好程序设计呢?或者更现实一点,如何在短时间内成为一个

Java编程那些事儿1——序言

 序言          从大学毕业到现在,马上就六年了,这六年中从事过开发,也从事培训工作,相比而言,参加培训工作的时间要长一些.由于工作的特点,遇到了各种各样的学生,在学习编程时遇到了一系列的问题,也有很多迷茫的时候,希望通过编写本书,把相关的问题进行一下总结,把自己的经验和大家进行分享.当然由于一些知识也只是个人见解,也希望大家积极指正,帮助编程的初学者,以及程序开发人员深刻理解基础的概念,更好的学习编程和从事开发工作.         编写一本书,总要有个名字吧,姑且把书名叫做<Java

《java与模式》笔记-----抽象类和接口

笔记 抽象类和接口 什么是接口:接口就是一些方法特征的集合------接口是对抽象的抽象. 什么是抽象类:抽象类对某具体类型的部分实现------抽象类是对具体的抽象. 方法特征包括:方法的名字.参数的数目.参数的类型.不包括:返回类型.参数名字.和抛出的异常. 接口是类型转换的前提.是动态调用的保证.实现某一接口就完成了类型的转换(多重继承):动态调用只关心类型,不关心具体类.          -------------------------------------------------

Java编程那些事儿94——多线程实现方式1

12.2 多线程实现方式 线程的概念虽然比较复杂,但是在Java语言中实现线程却比较简单,只需要按照Java语言中对于线程的规定进行编程即可. 在实现线程编程时,首先需要让一个类具备多线程的能力,继承Thread类或实现Runnable接口的类具备多线程的能力,然后创建线程对象,调用对应的启动线程方法开始执行即可实现多线程编程. 在一个程序中可以实现多个线程,多线程编程指在同一个程序中启动了两个或两个以上的编程形式.当启动的线程数量比较多时,对于系统资源的要求比较多,所以程序支持的最大线程数量和