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 小时前
C# 异常处理详解
开发语言·后端·c#
懒鸟一枚2 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
玖玥拾2 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#
铅笔侠_小龙虾3 小时前
Rust 学习目录
开发语言·学习·rust
我命由我123453 小时前
执行 Gradle 指令报错,无法将“grep”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
考虑考虑3 小时前
Sentinel安装
java·后端·微服务
云泽8083 小时前
从零吃透 C++ 异常:抛出捕获、栈展开、异常重抛与编码规范详解
开发语言·c++·代码规范
灯澜忆梦3 小时前
GO---可见性规则
开发语言·golang
逝水无殇4 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#
这是个栗子5 小时前
前端开发中的常用工具函数(八)
开发语言·前端·javascript