Chao's Blog Chao's Blog
首页
  • vue

    • vue路由
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • java
  • spring
  • springboot
  • springcloud
  • git
  • maven
  • nginx
  • tomcat
  • springmvc
  • jvm
  • 图数据库
  • mysql数据库
  • redis数据库
  • windows下docker安装nginx并挂载目录
  • linux命令
  • linux安装软件
  • linux脚本
  • idea
  • vscode
  • 归档
  • 综合项目

    • 若依项目
    • mall项目
  • java
  • mybatis
  • xxl-job
  • mybatis
GitHub (opens new window)

~chao

永远菜鸟,不断努力~
首页
  • vue

    • vue路由
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • java
  • spring
  • springboot
  • springcloud
  • git
  • maven
  • nginx
  • tomcat
  • springmvc
  • jvm
  • 图数据库
  • mysql数据库
  • redis数据库
  • windows下docker安装nginx并挂载目录
  • linux命令
  • linux安装软件
  • linux脚本
  • idea
  • vscode
  • 归档
  • 综合项目

    • 若依项目
    • mall项目
  • java
  • mybatis
  • xxl-job
  • mybatis
GitHub (opens new window)
  • java

    • java深度克隆
    • restemplate

    • hashcode()和equals()的作用、区别、联系
    • java8新特性
    • 接口与抽象类
      • 什么是抽象类
      • 抽象方法的优点
      • 抽象类和接口的主要区别
    • java深度克隆工具类支持对象和list克隆
    • 子线程执行10次后,主线程再运行5次,这样交替执行三遍
    • CountDownLatch的理解和使用
    • CAS详解
    • java中的各种锁详细介绍
    • java线程池
    • Java锁之偏向级锁、轻量级锁、重量级锁
    • Transactional注解与try{}catch(Exception e){}同时使用事务控制无效问题
    • JAVA8 optional用法
    • CyclicBarrier 使用详解
    • Semaphore 使用及原理
    • Java中七大垃圾回收器
  • spring

  • springboot

  • springcloud

  • git

  • maven

  • nginx

  • tomcat

  • springmvc

  • jvm

  • 正则表达式

  • 消息中间件

  • python

  • 后端
  • java
~chao
2022-11-14
目录

接口与抽象类

原创

# Java】抽象类详解、抽象类与接口的区别

Zhou_LC (opens new window)2022-11-01 19:58:04博主文章分类:Java (opens new window)©著作权
文章标签java (opens new window)抽象类 (opens new window)子类 (opens new window)抽象方法 (opens new window)文章分类其它 (opens new window)其它 (opens new window)_阅读数_65

# 文章目录

  • 什么是抽象类
  • 抽象方法的优点
  • 抽象类和接口的主要区别

# 什么是抽象类

例如:
public abstract class A {
abstract int add(int x, int y);
int sub(int x, int y) {
return x - y;
}
}

  • 抽象类的类名前加修饰符abstract,可以包含抽象方法(用abstract修饰,只有方法原型,没有方法的实现),也可以包含非抽象方法,可包含常规类能包含的任何成员;
  • 抽象类是没有具体实例对象的类,不能使用new方法进行实例化,只能用作超类,只有当子类实现了抽象超类中的所有抽象方法,子类才不是抽象类,才能产生实例,如果子类中仍有抽象方法未实现,则子类也只能是抽象类;
  • 只有抽象类才可以包含抽象方法。

# 抽象方法的优点

  • 隐藏具体细节信息,所有的子类使用的都是相同的方法原型,其中包含了调用该方法时需要了解的全部信息;
  • 强迫子类完成指定的行为,规定所有子类的标准行为,是设计模式中的模板方法模式的体现。

# 抽象类和接口的主要区别

  • 抽象类中可以包含普通类的任何成员,也可以包含非抽象方法,主要用于设计模式中的模板方法模式,如果项目设计时,遇到子类需要复用父类的实现方法,或者使用父类的成员变量,但又不希望直接使用父类时,那么可以声明父类为抽象类来解决;
  • 接口在 JDK 的当前版本中,也支持在接口中声明已实现的方法(用 default 关键字),而且接口中的变量,都为 public static final 修饰(可省略),而方法,都为 public abstract 修饰(可省略),但接口的主要用途还是用于约定实现类的“规范”;
  • 总之,如果需要用继承模板方法或变量来实现子类,那么就用抽象类声明父类,否则,只是约定“规范”那么就用接口。

https://blog.51cto.com/u_15733182/5733431 (opens new window)

编辑 (opens new window)
上次更新: 2024/01/26, 05:03:22
java8新特性
java深度克隆工具类支持对象和list克隆

← java8新特性 java深度克隆工具类支持对象和list克隆→

最近更新
01
python使用生成器读取大文件-500g
09-24
02
Windows环境下 Docker Desktop 安装 Nginx
04-10
03
使用nginx部署多个前端项目(三种方式)
04-10
更多文章>
Theme by Vdoing | Copyright © 2022-2024 chaos | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式