Java普通类、抽象类、接口的应用和区别

Java普通类、抽象类、接口的对比

比较项 普通类 抽象类 接口
定义关键字 class abstract class interface
继承或实现关键字 extends extends implements
成员字段 变量、常量 变量、常量 常量
构造器 既可以定义也可以实例化 只能定义,不能实例化 既不能定义也不能实例化
成员方法 普通方法、静态方法 普通方法、静态方法、抽象方法 抽象方法、静态方法、默认方法

通过表格进行对比,当根据需求分析,不仅需要创建抽象方法,还需要其他复杂操作,推荐使用抽象类,功能更强大,下面分别展开说说抽象类和接口

抽象类

abstract关键字特点

能够修饰类和成员方法

  1. 修饰的类不能实例化对象
  2. 修饰的成员方法没有方法体

格式

java 复制代码
public abstract class 类名 {
成员字段;
// 抽象类中定义构造器,只使用构造器进行值传递
构造器;
成员方法;
// 抽象方法    [ ] 中包含的内容,表示可省略
public abstract 返回值类型 方法名([参数列表]);
}

抽象类中可以定义的内容

接口

接口是按照用户需求封装方法,由具体的实现类去实现

为什么要使用接口

由于Java只支持单继承模式,避免单继承局限性,使用接口

定义格式

java 复制代码
public interface 接口名{
接口成员;
}

接口中可以定义的内容

如图在IDEA中,简单创建了一个接口类,并定义了成员,接口中不能定义的成员是报错的

类如何去实现抽象类和接口

先继承父类再实现接口,接口可以实现多个

java 复制代码
public [修饰符] class 类名 extends 父类 implements 接口[,接口1,...,接口n] {
    成员字段;
    构造器;
    成员方法;
    重写接口中的所有抽象方法;
相关推荐
梅孔立1 小时前
解决Nginx缓存不写入响应体问题:浏览器强制不缓存配置教程
java·开发语言·nginx·spring
代码改善世界1 小时前
【C++进阶】红黑树模拟实现mymap和myset
开发语言·c++
方也_arkling1 小时前
【Java-Day18】API篇-Arrays
java·算法·排序算法
风味蘑菇干1 小时前
数据流:
java
zzj_2626101 小时前
实验七 Python 文件操作与异常处理
开发语言·python
LiLiYuan.1 小时前
【happens-before 八大规则详解】
java·开发语言
断点之下1 小时前
从C的struct到C++的class:封装、this指针、三大特性入门
开发语言·c++
yongui478341 小时前
基于稀疏低秩分解的图像去噪MATLAB实现
开发语言·matlab
geovindu1 小时前
python: N-Barrier Pattern
开发语言·python·设计模式·屏障模式