前言

对于面向对象编程来说,抽象是它的特征之一。

在Java中,实现抽象的机制分两种,一为抽象类,二为接口
抽象类为abstract class,接口为Interface

今天来学习一下Java中的抽象类和接口。

目录

  1. 什么是抽象
  2. 什么是抽象类
  3. 什么是接口
  4. 区别
  5. 代码例子
  6. 结语

什么是抽象

从具体事物抽出,概括它们共同的方面,本质属性与关系等,称为抽象。看不见,摸不着的东西叫做抽象,抽象是人们对世界万物的感觉,用特定的图像表达出来,要理解抽象的东西,就必需从内心感受它们。

举例,红色这个词语本身,在没有建立存在色彩这种概念以前,就是一个很抽象的东西。抽象说直白点就是把现实生活中复杂的问题抽象成一个简单的问题。举个例子,如人这个现实中的东西,抽象下就是person这个对象,对象有名字即类名,接着有属性即年龄,性别,身高等。对于对象中的方法即是人要吃饭,睡觉等。

什么是抽象类

抽象类的定义和使用格式

abstract class 类名{类体
}
class 类名 extends 抽象类 {//实现全部抽象方法
}

抽象类是类对象的抽象集合,抽象类使用abstract关键字修饰,abstract不能与final并列修饰同一个类,在抽象类中具体抽象的是属性和行为,在抽象类中,含有抽象方法的类为抽象类,一定是抽象类,但抽象类中不一定含有抽象方法。

抽象类不能被实例化,如果要实例化,需通过子类继承抽象类,然后子类必须重写父类的所有抽象方法。抽象方法在抽象类,仅此声明,方法的具体实现在子类中进行。抽象类只有被继承才有用武之地。

//抽象类
public abstract class Person {public abstract void run();
}//子类继承抽象类
public class Studentone extends Person{@Overridepublic void run(){System.out.println("人会跑");}
}//测试
public class Test {public static void main(String[] args){Person person = new Student();person.run();}
}//结果
人会跑


什么是接口

接口的定义和使用格式

interface 接口名 {[public] [static] [final] 变量;[public] [abstract] 方法;
}
class 类名 implement 接口列表 {//实现所有接口中声明的方法
}

接口是类行为方法的抽象集合,类行为方法,是对方法进行抽象,接口不是一个类,对于抽象类,它是对对象的抽象集合,对象即包含对属性和方法,接口是比抽象类更加抽象的一种。

Java中的接口是为了降低功能模块间的耦合,子接口中所有方法都是抽象的,都是公有的。接口中的属性是全局常理即为public static final的,方法即public static的。关键字implements实现接口,Java中不能继承多个抽象类,但能实现多个接口,记住接口只能继承接口。

interface Demo{void sleep();void play();
}class Test implements Demo{void sleep();void play();
}

类必须实现接口中所有的方法,但抽象类可以不用实现接口中的所有方法。

区别

抽象类和接口语法层次

public abstract class Demo {abstract void method1();void method2(){}
}
interface Demo {void method1();void method2();
}

可以看出接口是抽象类的特殊化。

抽象类和接口设计层次

  1. 抽象类是对类抽象,而接口是对行为的抽象
  2. 抽象类为继承关系,接口为实现类与接口之间的契约关系
  3. 抽象类为单继承,接口为多“继承”。子类只能继承一个抽象类,但可实现多个接口。

代码

//抽象类
abstract class Person {abstract void run();abstract void jump();
}//接口
interface School{void go();
}//实现
class Student extends Person implements School{void run();void jump();void go();
}

抽象类中成员变量默认为friendly,函数修饰符publicprotecteddefault
接口属性为静态,public static final,成员函数为public

结语

  • 详解Java抽象类和接口的区别

小礼物走一走 or 点赞

java接口vm和dto的区别_第十八节:详解Java抽象类和接口的区别相关推荐

  1. java io字符输出流_灵魂一击!详解Java中的IO输入输出流

    什么是流?流表示任何有能力产生数据的数据源对象或者是有能力接收数据的接收端对象,它屏蔽了实际的I/O设备中处理数据的细节. IO流是实现输入输出的基础,它可以很方便地实现数据的输入输出操作,即读写操作 ...

  2. 精通java图片_面试必备:详解Java I/O流,掌握这些就可以说精通了?

    Java IO概述 IO就是输入/输出.Java IO类库基于抽象基础类InputStream和OutputStream构建了一套I/O体系,主要解决从数据源读入数据和将数据写入到目的地问题.我们把数 ...

  3. Day16-01 P71 面向对象12什么是多态 P72 对象13:instanceof和类型转换 P73 static关键字详解 P74 抽象类 P75 接口的定义与实现 P76N种内部类

    Day16-01 P71 面向对象12:什么是多态 //父类Person package com.oop.demo06;public class Person {public void run(){S ...

  4. java基础代码实例_基础篇:详解JAVA对象实例化过程

    1 对象的实例化过程 对象的实例化过程是分成两部分:类的加载初始化,对象的初始化 要创建类的对象实例需要先加载并初始化该类,main方法所在的类需要先加载和初始化 类初始化就是执行方法,对象实例化是执 ...

  5. java一个方法排他调用_Java编程实现排他锁代码详解

    一 .前言 某年某月某天,同事说需要一个文件排他锁功能,需求如下: (1)写操作是排他属性 (2)适用于同一进程的多线程/也适用于多进程的排他操作 (3)容错性:获得锁的进程若Crash,不影响到后续 ...

  6. java comparator相等_详解Java中Comparable和Comparator接口的区别

    详解Java中Comparable和Comparator接口的区别 发布于 2020-7-20| 复制链接 摘记: 详解Java中Comparable和Comparator接口的区别本文要来详细分析一 ...

  7. Java implement意思_详解JAVA中implement和extends的区别

    详解JAVA中implement和extends的区别 发布于 2020-4-14| 复制链接 摘记: 详解JAVA中implement和extends的区别extends是继承父类,只要那个类不是声 ...

  8. java callable 详解_详解Java Callable接口实现多线程的方式

    在Java 1.5以前,创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口.无论我们以怎样的形式实现多线程,都需要调用Thread类中的start方法去向操作系统请求 ...

  9. java mcu 视频会议_详解视频会议终端和MCU的区别

    详解视频会议终端和MCU的区别 视频会议终端和MCU都是视频会议系统的核心组成部分之一,但其价格也相对高昂,是整个视频会议系统的主要成本之一.但是不熟悉视频会议系统的人,常常将视频会议终端和MCU无意 ...

最新文章

  1. vuecli3配置webpack_vue CLI3的优化
  2. IP地址中的网络地址和主机地址分别是什么意思?怎么计算的呢?
  3. 快速开发基于 HTML5 网络拓扑图应用之 DataBinding 数据绑定篇
  4. Manjaro 17 搭建 redis 4.0.1 集群服务
  5. 【 HDU - 1215 】七夕节(数论,约数和公式)
  6. 算法笔记_100:蓝桥杯练习 算法提高 三个整数的排序(Java)
  7. Java怎么不启动_dubbo不启动了怎么回事???一模一样的另一个没问题
  8. You (root) are not allowed to access to (crontab) because of pam configuration
  9. Java指令编译java文件
  10. 大麦网滑块验证码自动识别
  11. iphone 操作手势种类
  12. c语言小鱼的游泳时间,信息学奥林匹克竞赛-小鱼的游泳时间
  13. ONF测试工作张攀:OpenFlow控制器性能测试工具进展
  14. 如何改typecho主题头像_零成本搭建hexo个人博客(二)--修改主题
  15. amh搭建php网站,AMH6.0发布 (免费版本) – AMH终于可以免费用了。
  16. STM32芯片包下载和安装教程
  17. 从文艺到抠脚-我的程序7年之痒
  18. android activity 实际,Android学习感悟之Activity
  19. 设计模式-策略模式-java-中文版
  20. Redis key键命令

热门文章

  1. 大数据预测分析是否对企业有影响
  2. 数据可视化过程中常见的错误类型
  3. 为何需要实施数据治理
  4. python飞机大战概要设计说明书_飞机大战概要设计文档 4改
  5. oracle中sysdate函数 ro,ORACLE常用函數
  6. AcWing 902. 最短编辑距离(线性DP)
  7. AcWing 829. 模拟队列
  8. 地理住宅区的特点_高三地理复习专题讲解:民居特点与自然环境的关系
  9. java object 数组_Java用Object实现数组队列的泛思与理解
  10. robot frame基础知识--变量