当前位置: 首页 > news >正文

Java 抽象知识笔记总结(油管)

Java系列文章目录

Java Optional 容器笔记总结


文章目录

  • Java系列文章目录
  • 一、前言
  • 二、学习内容:
  • 三、问题描述
  • 四、解决方案:
    • 4.1 抽象类的使用
    • 4.2 抽象类与接口的区别
      • 4.2.1 接口复习
      • 4.2.2 具体区别
      • 4.2.3 使用场景
        • 4.2.3.1 抽象类使用场景
        • 4.2.3.2 接口使用场景
  • 五、总结:
    • 5.1 学习总结:

一、前言

目的:学习Java抽象相关知识

  • 对油管博主John讲解的抽象相关知识进行笔记总结

二、学习内容:

  • 抽象类的使用
  • 抽象类与接口的区别

三、问题描述

  • 抽象类相关知识没有实践经验

四、解决方案:

4.1 抽象类的使用

抽象类注意事项

  • 新建的类不能是抽象类
  • 子类继承抽象类必须实现抽象方法

参考代码如下:

package org.example;public abstract class Animal {int age;public String name;public abstract void makeNoise();}
package org.example;public interface AnimalStuff {//int age = 5;void pool();}
package org.example;public class Cat extends Animal implements AnimalStuff{@Overridepublic void makeNoise() {System.out.println("Meow");}@Overridepublic void pool() {System.out.println("Cat is pool");}
}
package org.example;public class Main {public static void main(String[] args) {Cat cat = new Cat();cat.makeNoise();cat.pool();}
}
  • 我们可以通过子类继承抽象类来实现抽象方法

在这里插入图片描述

4.2 抽象类与接口的区别

4.2.1 接口复习

  • 接口里面包含终态静态与抽象

在这里插入图片描述

4.2.2 具体区别

我们已经知道Cat类不管是继承抽象类还是接口
都能在子类实现抽象方法
既然都能实现为什么我们还需要抽象类呢

区别:

  • 一个子类只能继承一个父类,但可以继承多个接口
  • 接口字段必须是静态与终态(终态已经定义了对子类来说没用
  • 抽象类可以有抽象方法也可以用其他方法灵活性高

相同点:

  • 抽象方法必须实现

4.2.3 使用场景

4.2.3.1 抽象类使用场景

Animal抽象类与Cat类
Cat与Animal是隶属关系(猫是动物)大部分动物一定会发声
所以抽象类Animal就可以定义发声的抽象方法让子类一定实现发声方法

  • 类相关性较高
4.2.3.2 接口使用场景

Cat类与AnimalStuff接口
同理,平级关系几乎大部分事务都能用这个抽象方法
所以方法使用与类关系不大

  • 类相关性较低

五、总结:

5.1 学习总结:

抽象类的作用:

  • 定义共享的属性和行为。
  • 提供一种规范,让子类去实现。
  • 避免"上帝类"(只有一个超级类做所有事情),鼓励模块化的继承。

抽象类与接口区别:

  • 一个子类只能继承一个父类,但可以继承多个接口
  • 接口字段必须是静态与终态(终态已经定义了对子类来说没用)
  • 抽象类可以有抽象方法也可以用其他方法灵活性高

声明:如本内容中存在错误或不准确之处,欢迎指正。转载时请注明原作者信息(麻辣香蝈蝈)。

http://www.lryc.cn/news/416901.html

相关文章:

  • 鲜花销售小程序的设计
  • Golang | Leetcode Golang题解之第324题摆动排序II
  • 32、Python之面向对象:对象的表示,再论Python是dict包括语法糖
  • 高级java每日一道面试题-2024年8月07日-网络篇-你对TCP的三次握手了解多少?
  • vite.config.ts中proxy的rewrite理解
  • 大数据环境下用户数据隐私安全防护系统的设计与实现(论文+源码)_kaic
  • 基于springboot+vue+uniapp的“口腔助手”小程序
  • 算法刷题之链表
  • C# 设计模式之适配器模式
  • BFS实现迷宫最短路径
  • Linux IPC解析:匿名命名管道与共享内存
  • Codeforces Round 964 (Div. 4) A~G
  • 单体应用提高性能和处理高并发-使用缓存
  • ollama教程——使用LangChain调用Ollama接口实现ReAct
  • 【Bug分析】Keil报错:error: #18:expected a “)“问题解决
  • MAC上设置快捷打开终端以及如何运用剪切快捷键
  • linux docker安装 gitlab后忘记root密码如何找回
  • C语言典型例题27
  • clion开发stm32f4系列(一)————移植rt-thread os系统
  • 计算机网络(网络层)
  • Python3 第六十六课 -- CGI编程
  • 【Unity23种设计模式】之状态模式
  • 二叉树刷题,bfs刷题
  • 为什么要用分布式锁
  • python游戏开发之五子棋游戏制作
  • 文件上传绕过最新版安全狗
  • 常用API_2:应用程序编程接口:ArrayList
  • 【Linux操作系统】进程的基本概念(PCB对象)详解
  • 曙光宁畅中科可控所有服务器机型出厂默认IPMI用户密码
  • mysql查线上数据注意数据库的隔离级别