当前位置: 首页 > 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 学习总结:

抽象类的作用:

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

抽象类与接口区别:

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++:模板初阶与STL简介
  • RabbitMQ 什么语言写的
  • 6 大推荐给开发者的无代码工具
  • Linux驱动开发—设备树传递给内核,匹配驱动过程分析
  • Java多线程-----定时器(Timer)及其实现
  • C++ 异常
  • 基于树莓派的智能家居中控系统:集成Flask、HTML、JavaScript与MQTT协议的文心一言AI接入(代码示例)
  • c语言11天笔记
  • @SpringBootConfiguration重复加载报错
  • 层次分析法(评价类问题)
  • NLP——文本预处理
  • Vue脚手架的安装(超详细篇,保姆级教程)
  • 【web3.0】Web3 开发教程与代码资源:探索如何在Web3项目中开发应用
  • VBA之Excel应用第二章第三节:InputBox函数对话框
  • Io 35
  • 03Go 类型总结
  • C++类中的特殊成员函数
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Vim 折腾记
  • - 概述 - 《设计模式(极简c++版)》
  • 如何进阶一名有竞争力的程序员?
  • 如何实现 font-size 的响应式
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • # 透过事物看本质的能力怎么培养?
  • # 职场生活之道:善于团结
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #Spring-boot高级
  • $().each和$.each的区别
  • (¥1011)-(一千零一拾一元整)输出
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)iOS字体
  • (转)关于pipe()的详细解析
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .net Stream篇(六)
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .Net 高效开发之不可错过的实用工具
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET6 命令行启动及发布单个Exe文件
  • .net经典笔试题
  • .Net中的设计模式——Factory Method模式
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • []Telit UC864E 拨号上网
  • [240527] 谷歌 CEO 承认 AI 编造虚假信息问题难解(此文使用 @gemini 命令二次创作)| ICQ 停止运作
  • [ACP云计算]组件介绍
  • [AWS]CodeCommit的创建与使用
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)
  • [c++] 什么是平凡类型,标准布局类型,POD类型,聚合体
  • [CQOI 2011]动态逆序对