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

自学Java-面向对象高级(final、单例类、枚举类、抽象类、接口)

自学Java-面向对象高级(final、单例类、枚举类、抽象类、接口)

  • 一、final关键字
    • 1、认识final关键字
    • 2、final修饰变量的注意
    • 3、常量
  • 二、单例类(设计模式)
    • 1、设计模式的概念
    • 2、单例设计模式
    • 3、单例类有很多形式
    • 4、懒汉式单例类
    • 5、小结
  • 三、枚举类
    • 1、认识枚举类
    • 2、枚举类的常见应用场景
  • 四、抽象类
    • 1、认识抽象类
      • 1、抽象类的注意事项、特点
      • 2、小结
    • 2、使用抽象类的好处
      • 小结
    • 3、模板方法设计模式
      • 小结
  • 五、接口
    • 1、接口的概述
      • 小结
    • 2、接口好处
    • 3、接口的综合小案例
    • 4、JDK8开始,接口新增的三种方法
      • 小结
    • 5、接口的注意事项
    • 6、综合案例

一、final关键字

1、认识final关键字

final关键字是最终的意思,可以修饰:类、方法、变量。
∙ \bullet 修饰类:该类被称为最终类,特点是不能被继承了。
∙ \bullet 修饰方法:该方法被称为最终方法,特点是不能被重写。
∙ \bullet 修饰变量:该变量有且仅能被赋值一次。

2、final修饰变量的注意

∙ \bullet final修饰基本类型的变量,变量存储的数据不能被改变。
∙ \bullet final修饰引用类型的变量,变量存储的地址不能被改变,但地址所指向对象的内容是可以被改变的。

3、常量

在这里插入图片描述
在这里插入图片描述

二、单例类(设计模式)

1、设计模式的概念

∙ \bullet 一个问题通常由n钟解法,其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式
∙ \bullet 设计模式有20多种,对应20多种软件开发中会遇到的问题。

2、单例设计模式

∙ \bullet 作用:确保某个类只能创建一个对象。
在这里插入图片描述
写法,实现步骤:

∙ \bullet 把类的构造器私有。
∙ \bullet 定义一个类变量记住类的一个对象。
∙ \bullet 定义一个类方法,返回对象。
在这里插入图片描述

3、单例类有很多形式

∙ \bullet 饿汉式单例:拿对象时,对象早就创建好了。
∙ \bullet 懒汉式单例:拿对象时,才开始创建对象。

4、懒汉式单例类

∙ \bullet 用对象时,才开始创建对象。
写法:
∙ \bullet 把类的构造器私有。
∙ \bullet 定义一个静态变量用于存储对象。
∙ \bullet 提供一个静态方法,保证返回的是同一个对象。
在这里插入图片描述

5、小结

在这里插入图片描述
在这里插入图片描述

三、枚举类

1、认识枚举类

∙ \bullet 枚举类是一种特殊类。
枚举类的写法:
在这里插入图片描述
在这里插入图片描述
特点:
∙ \bullet 枚举类中的第一行,只能写枚举类的对象名称,且要用逗号隔开。
∙ \bullet 这些名称,本质是常量,每个常量都记住了枚举类的一个对象。
在这里插入图片描述
在这里插入图片描述

2、枚举类的常见应用场景

∙ \bullet 枚举类很适合做信息分类和标志。
在这里插入图片描述

四、抽象类

1、认识抽象类

∙ \bullet 在Java中有一个关键字叫:abstract,它就是抽象类的意思,可以用它修饰类、成员方法。
∙ \bullet abstract修饰类,这个就是抽象类。
∙ \bullet abstract修饰方法,这个方法就是抽象方法。
在这里插入图片描述

1、抽象类的注意事项、特点

∙ \bullet 抽象类中不一定要有抽象方法,有抽象方法的类必须是抽象类。
∙ \bullet 类有的成员:成员变量、方法、构造器,抽象类都可以有。
∙ \bullet 抽象类最主要的特点:抽象类不能创建对象,仅作为一种特殊的父类,让子类继承并实现。
∙ \bullet 一个类继承抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。

2、小结

在这里插入图片描述

2、使用抽象类的好处

∙ \bullet 父类知道每个子类都要做某个行为,但是每个子类要做的情况不一样,父类就定义成抽象方法,交给子类去重写实现,我们设计这样的抽象类,就是为了更好的支持多态。
在这里插入图片描述

小结

在这里插入图片描述

3、模板方法设计模式

∙ \bullet 提供一个方法作为完成某类功能的模板,模板方法封装了每个实现步骤,但允许子类提供特定步骤的实现。
∙ \bullet 模板方法设计模式可以提高代码的复用、并简化子类设计。
在这里插入图片描述
写法
∙ \bullet 1、定义一个抽象类。
∙ \bullet 2、在里面定义2个方法
①一个是模板方法:把共同的实现步骤放里面去。
②一个是抽象方法:不确定的实现步骤,交给具体的子类来完成。

多学一招
建议使用final关键字修饰模板方法,为什么?
∙ \bullet 模板方法是给子类直接使用的,不能被子类重写。
∙ \bullet 一旦子类重写了模板方法,模板方法就失效了。

小结

在这里插入图片描述

五、接口

1、接口的概述

∙ \bullet Java提供了一个关键字interface定义接口。
在这里插入图片描述
∙ \bullet 注意:接口不能创建对象
∙ \bullet 接口是用来被类实现(implements)的,实现接口的类称为实现类,一个类可以同时实现多个接口。
在这里插入图片描述

小结

在这里插入图片描述

2、接口好处

∙ \bullet 弥补了类单继承的不足,一个类同时可以实现多个接口,使类的角色更多,功能更强大。
∙ \bullet 让程序可以面向接口编程,这样程序员就可以灵活方便的切换各种业务实现(更利于程序的解耦合)。

3、接口的综合小案例

在这里插入图片描述

4、JDK8开始,接口新增的三种方法

在这里插入图片描述
∙ \bullet 增强了接口的能力,更便于项目的扩展和维护。

小结

在这里插入图片描述

5、接口的注意事项

在这里插入图片描述

6、综合案例

在这里插入图片描述


http://www.kler.cn/a/549343.html

相关文章:

  • 反向代理ml
  • React:初识React
  • 利用MATLAB的linkaxes函数实现子图频率轴同步缩放
  • Hive查询之分组与Join
  • 链表 —— 常用技巧与操作总结详解
  • [思考记录.AI]关于Deepseek-r1的思维链
  • DeepSeek 助力 Vue 开发:打造丝滑的评分组件(Rating)
  • 什么是MVC?什么是SpringMVC?什么是三层架构?
  • Cursor 配置管理器:优化您的编辑器体验
  • Kotlin 2.1.0 入门教程(二十)扩展
  • 青少年编程与数学 02-009 Django 5 Web 编程 17课题、中间件
  • 车载音频架构图详解(精简)
  • 【Scrapy】Scrapy教程2——工作原理
  • 《全球网络安全政策法律发展研究报告 (2024) 》
  • pycharm社区版有个window和arm64版本,到底下载哪一个?还有pycharm官网
  • PHP本地商家卡券管理系统
  • C# 控制台相关 API 与随机数API
  • JavaWeb——Servlet基础
  • LeetCode每日精进:142.环形链表II
  • Dify+Ollama本地部署deepseek模型(自用)