java基础篇(五:面向对象——1)接口和抽象类
来源:互联网 发布:javascript 反编译 编辑:程序博客网 时间:2024/05/22 00:08
引言
抽象是对象由低级向高级的过渡,总结出共同点得到一个新的对象。
概述
接口和抽象类一直都是java中抽象领域的焦点,小编带大家一探究竟。
内容
一 抽象类
1定义:关键字abstract修饰的类
2特点:
(1)抽象方法一定在抽象类中
(2)抽象类和抽象方法必须被abstract修饰
(3)抽象类不能被实例化
(4)抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。
如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
(5)抽象类必须被继承,抽象类的抽象方法必须被重写
(6)抽象方法只需声明,而不需要实现
3抽象类与普通类的区别
(1)抽象方法必须为public或者protected(private修饰的类不能被子类继承,子类无法实现该方法),缺省情况下是public。
(2)抽象类不能用来创建对象,即实例化
(3)如果一个类继承一个抽象类,子类必须重写父类的抽象方法,否则必须将子类也定义为abstract类
4问题
(1)abstract和哪些关键字不能共存?
final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。
private:抽象类中的私有的抽象方法,不被子类所知,就无法被复写。
而抽象方法出现的就是需要被复写。
static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。
可是抽象方法运行没意义。
(2)抽象类中是否含有构造函数?
有,抽象类是一个父类,要给子类提供实例的初始化。
二 接口
1 定义:一些方法特征的集合。
2 特点:只有方法的特征,没有方法的实现
3 含义
(1)java接口:java语言中存在的结构,含有特定的语法和结构
(2)一个类所具有的方法的特征集合,一种逻辑上的抽象
4 特性
(1)不能实例化
(2)不能构造接口的对象,可以声明接口的变量
(3)接口中不能包含实例域或静态方法
(4)接口与接口之间可以是继承关系,并且可以实现多继承
(5)一个非抽象类实现了某个接口,就必须实现该接口中的所有方法;一个实现了某个接口的抽象类,可以不实现该接口中的抽象方法。
5 注意:
(1)接口固定的修饰符可以省略
(2)一个类实现多个接口,要以逗号隔开
(3)接口的变量必须引用实现了接口的类对象
6 疑问
(1)接口为何不能用继承代替
java不支持多继承,会造成子类中某些方法或者变量的不确定性
7 实践
public interface Test{ public static final int num; //成员常量具有固定的修饰符:public static final public abstract void method; //成员函数具有固定的修饰符:public abstract }public class Testimpl implements Test{ // 实现接口中的所有方法 ..... }
三 对比
1 语法层面上的区别
(1)抽象类可以提供成员方法的实现细节,而接口中只能存在publicabstract 方法;
(2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是publicstatic final类型的;
(3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
(4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。
2设计层面上的区别
(1)抽象类是对事物的抽象,即对类的抽象;接口是对行为的抽象。
抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。
(2)抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。
总结
java的接口和抽象类各自适合不同应用场景,必要的时候二者可以结合使用,最重要是理解它们共同点——抽象,作为面向对象的三大特性之一,是高级开发人员必备思想。
- java基础篇(五:面向对象——1)接口和抽象类
- java基础-面向对象(接口和抽象类)
- java基础学习面向对象之抽象类和接口 五-11
- Java基础(8):面向对象—抽象类和接口的区别和各自特点
- java基础--3.面向对象-5.抽象类和接口
- 【Java基础】——java面向对象(中)—继承、抽象类、接口
- Java基础(面向对象三——继承、final关键字、抽象类、接口)
- Java基础--面向对象(继承、抽象类、接口)
- 面向对象编程基础 五 抽象函数和抽象类
- java面向对象,接口和抽象类.
- Java基础(一):Java面向对象、面向对象封装、抽象类、接口、static、final
- Java基础(一):Java面向对象、面向对象封装、抽象类、接口、static、final
- Java基础(极客)——13、Java面向对象-抽象类与接口
- Java基础—面向对象(五)
- Java面向对象05-抽象方法,抽象类和接口
- Android之JavaSe基础--面向对象高级部分-接口,抽象类(五)
- java基础(六)——面向对象_继承、抽象类、接口
- 黑马程序员——Java基础---面向对象之多态抽象类接口
- 剑指offer_字符串---左旋转字符串
- PHP 安装扩展步骤
- vsphere 客户机 使用光驱引导启动
- codevs 1267 老鼠的旅行 DP 解题报告
- php 安装扩展插件实例-gd库
- java基础篇(五:面向对象——1)接口和抽象类
- Centos 7 主要命令改动 service chkconfig iptables
- php插件名称 yum安装
- U盘模式无法引导进入pe系统
- 修改 ssh 远程连接 时间
- tomcat 安装在 linux
- tomcat 简单配置
- Linux 安装 jdk
- 安卓系统中对SD卡的操作