关于抽象类 abstract class:

1. 抽象方法必须在抽象类中

2. 抽象类和抽象方法要用abstract 关键字修饰

3. 不可以用new 来实例化一个abstract类,因为调用抽象方法没有意义

4. 抽象类中的方法要被使用,必须由子类实现了父类中的所有抽象方法后,建立子类的对象才能调用;

如果子类中只覆盖了部分抽象方法,那么这个子类也是一个抽象类。

抽象类和一般类的区别只有一点: 有一些功能不是很清楚,只知道这个功能需要明确出现,但是该类无法定义主体,需要子类去实现。通过抽象方法来处理。

抽象类比一般类多了抽象方法;抽象类不可以被实例化;(抽象类中也可以不定义抽象方法,只用来防止实例化)

模板方法设计模式: 在定义功能时,功能的一部分是确定的,但是有一部分功能是不确定的,而确定的部分在使用不确定的部分。这时,我们可以把不确定的功能暴露出去,由该类的子类去完成。不一定是抽象类和抽象方法哦,只是可以被子类覆盖。

接口interface:

当抽象类中的所有方法都是抽象的时候,可以将这个类定义为接口。

接口的定义格式:

1. 接口中定义: 常量和抽象方法

常量: public static final

抽象方法: public  abstract

小结: 接口中的成员都是固定格式的,即 默认的也是上面的那种定义格式。

2. 继承接口的类要用关键字  implements

3. 接口是不可以创建对象的,因为有抽象方法。需要子类对接口中的抽象方法全部实现后才能实例化子类对象。如果有些抽象方法没有实现,则子类是一个抽象类。

4. 接口支持多实现,因为接口中没有方法实体,只需要子类定义就可以了,一个类在继承一个类的同时还可以实现多个接口。

5. java 所支持的多继承, 只是在接口与接口之间,接口之间存在多继承。类的多实现也可以实现多继承。

接口的特点:

1. 接口是对外暴露的规则

2. 接口是程序的功能扩展

3. 接口可以用来多实现

4. 类与接口之间是实现的关系,而且类在继承一个类的同事可以同时实现多个接口

5. 接口与接口之间可以有继承关系

在项目使用中,继承表示 is a的关系,而实现接口则表示 like a 的意思。  可以形象的把继承的那个叫做主业,而实现的接口是那个类的副业。

abstract class VS interface的更多相关文章

  1. Java abstract class 和 interface 的区别

    Java abstract class 和 interface 的区别 1. abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制 2. 以Door的抽象概 ...

  2. 深入理解abstract class和interface(转)

    原文地址 深入理解abstract class和interface java提高篇(四)-----抽象类与接口

  3. abstract class和interface 知多少!!!

    1.相同点   A. 两者都是抽象类,都不能实例化.   B. interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法. 2. 不同点   A. interface需 ...

  4. 解决:mvn archetype:create Abstract class or interface 'org.apache.maven.artifact.repository.ArtifactRepository' cannot be instantiated

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2 .3:create (default- ...

  5. 11)Java abstract class 和 interface

    abstract class 和 interface 的区别        含有abstract修饰符的class即为抽象类,abstract 类不能创建实例对象.含有abstract方法的类必须定义 ...

  6. 在.NET 应用程序设计中如何选择Class, Abstract Class and Interface

    关键字: Type– 类型 Class - 类 Abstract - 抽象的 Interface - 接口 Member - 成员 Method - 方法 Property - 属性 预备知识:在阅读 ...

  7. abstract class与interface的区别与联系

    1.相同点:A. 两者都是抽象类,都不能实例化.B. interface实现类及abstract class的子类都必须要实现已经声明的抽象方法. 2. 不同点:A. interface需要实现,要用 ...

  8. 【转载】java abstract class和interface的区别

    转载:https://blog.csdn.net/b271737818/article/details/3950245 在Java语言中,abstract class和interface是支持抽象类定 ...

  9. 深入理解abstract class和interface

    摘自:http://www.ibm.com/developerworks/cn/java/l-javainterface-abstract/ (如有侵权,请留言,版主将立即删除) abstract c ...

  10. 关于abstract class 和 interface

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

随机推荐

  1. python 第三方库 dateutil.parser 使用说明

    dateutil.parser 顾名思意 就是与日期相关库里的一个日期解析器 能够将字符串 转换为日期格式 我们来看看具体的用法 首先 需要在线安装 pip install python-dateut ...

  2. Qt的子窗口和父窗口阻塞问题

    在图形界面中,软件设计者通常需要将活跃窗口限制为一个.在某个窗口活跃时,它的父窗口被它挡住或者挡住一部分,这时候用鼠标去点击父窗口是没有作用的.问题的关键在于将子窗口设置模态: void MainWi ...

  3. 安装linux虚拟机配置静态ip(桥接模式)

    1.centOs7.VMware Workstation14 2.常规新建虚拟机操作后,来到选择连接模式: 这里选择桥接模式,复制物理网络连接状态(就是把实际的主机网卡信息拷贝一份,让虚拟机也有一份和 ...

  4. top和nvidia-smi无法显示占用GPU的PID问题

    通过nvidia-smi查看显卡使用情况,发现显卡在被占用,但是却没有提示占用显卡的进程id, 这时可以输入 fuser -v /dev/nvidia* 可以查看到, 再利用sudo kill -9 ...

  5. Linux系统KVM虚拟化技术

    在公司工作时出现了这样一个需求:需要在一台服务器中安装两个系统,分别部署不同的服务,设置不同的系统时间,并且两个系统之间可以互相通讯.在网上查询相关资料后,决定通过KVM实现该功能,现将步骤记录如下. ...

  6. json&pickle模块

    序列化:我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化 反序列化:把变量内容从序列化的对象重新读到内存中,这一过程称为反序列化 为什么要序列化? 1.持久保存状态 一个软件的执行就是在处 ...

  7. Redis的主从复制(十一)

    1>什么是主从复制 持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后(在使用aof和rdb方式时,如果redis重启,则数据从aof文件加载)会将硬盘上持久化的数据恢复 ...

  8. win10下安装mongodb

    环境 :win10  mongodb-win32-x86_64-v3.4-latest.zip 1.下载地址:https://www.mongodb.com/download-center/commu ...

  9. python基础学习1(linux命令)

    读研时转人工智能,机器学习方向,必然要用到python,于是开始自学. 1.环境: 使用linux环境下python编译,熟悉各种基本操作. 2.书籍: --  笨方法学python --   a b ...

  10. Unity3D UGUI实现Toast

    项目中有些信息需要以Toast的形式体现出来,不需要交互,弹出后一段时间后消失,多个Toast会向上重叠,下面是一个UGUI Toast的实现,动画部份用到了Dotween来实现 首先需要制作Toas ...