首页 > 编程语言 >day12_我的Java学习笔记 (package包、权限修饰符_private+缺省+protected+public、final、常量、枚举_enum、抽象类_abstract_class_模板方

day12_我的Java学习笔记 (package包、权限修饰符_private+缺省+protected+public、final、常量、枚举_enum、抽象类_abstract_class_模板方

时间:2024-04-17 09:01:11浏览次数:16  
标签:常量 接口 抽象 抽象类 方法 final

1.包






IDEA配置自动导包:



2.权限修饰符




同一个类中的,【private、缺省、protected、public】都可以访问

同一个包中的其他类,【private】不可以访问,【缺省、protected、public】都可以访问

不同包下的无关类,【private、缺省、protected】都不可以访问,只有【public】可以访问



不同包下(继承)的子类,【private、缺省】不可以访问,【protected、public】都可以访问


3.final (final:代表已经绝育了!!!)

3.1 final修饰的类,不能被extends


3.2 final修饰的方法,方法不能被重写


3.3 final修饰变量,总规则:变量有且仅能被赋值一次

3.3.1 final修饰局部变量


final修饰的变量是基本类型:那么变量存储的数据值不能发生改变。


3.3.2 final修饰静态成员变量


3.3.3 final修饰实例成员变量


以上创建多个实例,会导致所有的实例对象的name都叫“猪刚鬣”。




4.常量

4.1 常量概述和基本作用




在编译阶段会进行“宏替换”:把使用常量的地方全部替换成真实的字面量。

这样做的好处:让使用常量的程序的执行性能,像直接使用字面量一样。

4.2 常量做信息标志和分类

这里oop-app2目录下,为大家已经准备了一个代码,模拟控制“上”、“下”、“左”、“右”四个方向。






但是上述改成1、2、3、4是硬编码,可读性不好,代码质量不高,总之不是一种优雅的设计方式,所以可以用常量来做信息的标志和分类


5.枚举

常量做信息标志和分类:

虽然可以实现可读性,但是入参值不受约束,代码相对不够严谨。

枚举做信息标志和分类:

代码可读性好,入参约束严谨,代码优雅,是最好的信息分类技术!建议使用!

5.1 枚举的概述


我们这里先对原.java文件进行编译,然后对编译后的.class文件进行反编译,看下反编译后的文件内容:





5.2 枚举的使用场景演示

5.2.1 那么常量作为信息标志,存在什么问题呢?


5.2.2 枚举做信息标志和分类: 代码可读性好,入参约束严谨,代码优雅,是最好的信息分类技术!







不过,实际项目中,还是有很多公司的开发,会选择常量来作为信息标志和分类的。

(主要原因还是这样写比较简单吧,外加还可以额外增加一些bug修复的工作量,毕竟大家都是按工时发工资的,多一些工时,就多一些工资,外加加班多了,有考勤绩效奖励哈~)


6.抽象类

6.1 抽象类概述


  • 1.类有的东西,抽象类都有。
  • 2.抽象类中可以没有抽象方法,但是有抽象方法的类,必须是抽象类。
  • 3.一个类继承了抽象类,必须重写抽象类的全部抽象方法,否则这个类必须定义成抽象类。(一个类实现了接口,必须重写全部接口的全部抽象方法,否则这个类也必须定义成抽象类。)
  • 4.抽象类不能创建对象。(【最重要的特征】:得到了抽象方法,失去了创建对象的能力 (有得有失))
  • 5.不能用abstract修饰变量、代码块、构造器。
  • (抽象类,就像一个半成品的图纸,是一个不完整的设计图,为子类完成某些行为,而将这类行为定义成抽象方法,以供子类继承,并重写使用)

6.1.1 抽象的使用场景




6.1.2 注意事项:

  • 抽象方法只有方法签名,不能声明方法体。
  • 一个类中如果定义了抽象方法,这个类必须声明成抽象类,否则报错。




还有一种方式,利用快捷键:(直接写个run,一回车就可以了)




6.2 抽象类的案例















案例中,关于银卡的代码,自行补充哈

6.3 抽象类的特征、注意事项



一个类继承了抽象类必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。






抽象类,不能创建对象。


final和abstract是什么关系?


6.4 抽象类的应用知识:模板方法模式

【案例】理解模板方法:写作文案例









模板方法我们是建议使用final修饰的,这样会更专业,那么为什么呢?(加了final,可以防止被子类重写该方法)



7.接口

7.1 接口概述、特点


接口就是一种约定俗成的规范,约束对方只能按照一定的标准进行设计。


7.2 接口的基本使用:被实现

一个类实现了接口,必须重写全部接口的全部抽象方法,否则这个类也必须定义成抽象类。








7.3 接口与接口的关系:多继承





接口多继承的作用:规范合并,整合多个接口为同一个接口,便于子类实现。








上述继承接口如果太多了,就会写老长,很繁琐。
修改如下:


7.4 JDK8开始接口新增方法


第一种:默认方法(实例方法) (注意:接口的默认方法必须用default修饰,且需用接口的实现类的对象来调用。)


第二种:静态方法 (注意:接口的静态方法必须用本身的接口名来调用。)



第三种:私有方法(实例方法) (注意:接口的私有方法必须用private修饰,且只能在本类中被其他的默认方法或者私有方法访问。)



我们可以改下jdk的版本,看下






7.5 使用接口的注意事项

1、接口不能创建对象 (接口是更加彻底的抽象)
【接口无法直接创建对象,但是实现了接口的类可以创建对象,我们实现了某一个接口,就相当于创建了这个接口的一个子类,接口就是这个类的父类】

2、一个类实现多个接口,多个接口中有同样的静态方法不冲突。



3、一个类继承了父类,同时又实现了接口,父类中和接口有同名方法,默认用父类的。(因为父类离他更近,从伦理学上,现有亲爸再有干爹)

(因为父类离他更近,从伦理学上,现有亲爸再有干爹,所以类都是先继承,再实现

4、 一个类实现了多个接口,多个接口中存在同名的默认方法,不冲突,这个类重写该方法即可。




5、一个接口继承多个接口,是没有问题的,如果多个接口中存在规范冲突则不能多继承。


8.总结:(总结.avi)

接口和抽象类都不能创建对象。









标签:常量,接口,抽象,抽象类,方法,final
From: https://www.cnblogs.com/SuperLee017/p/18137441

相关文章

  • 视频汇聚/安防视频监控云平台EasyCVR云端录像播放与下载的接口调用方法
    视频汇聚/安防视频监控云平台EasyCVR支持多协议接入、可分发多格式的视频流,平台支持高清视频的接入、管理、共享,支持7*24小时不间断监控。视频监控管理平台EasyCVR可提供实时远程视频监控、录像、回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云......
  • 如何在Semantic Kernel中使用第三方代理OpenAI API接口
    最近手里没有官方的OpenAIAPIKey了,只能在第三方代理平台去购买APIKey。但是使用SemanticKernel的时候发现AddOpenAIChatCompletion不像AddAzureOpenAIChatCompletion那样可以选择终结点去看了下SemanticKernel项目下的issues,这个问题被提及了好几次,但是官方仍然没有提供End......
  • C++发票识别、发票查验接口示例,您的“发票管理专家”
    发票识别+发票查验接口。当财务人员在进行发票的数字化管理时,仅需一键上传发票图片,翔云发票识别接口即可快速、精准对发票的全票面信息进行提取,翔云发票查验接口可根据识别接口提取的发票信息实时联网进行真伪查验。助财务工作者从发票海洋中解脱出来,提升发票管理效率与准确率......
  • C++身份核验接口代码、身份证OCR、身份证实名认证API
    实名认证是什么意思呢?一般指的是对用户资料真实性进行的验证审核,这样有利于建立完善且可靠的互联网环境。如果交易双方使用的都是虚假信息,那么在诸多环节会存在很大的风险。另外,还有游戏平台对玩家进行实名认证,防止未成年人注册。实名认证有利于网络绿化,所以在互联网发展......
  • 实验二-密码引擎-3-sdf接口
    `/************************************************************************* >FileName:test.c >Author: >Mail: >CreatedTime:2018年04月26日星期四16时01分52秒************************************************************************/#incl......
  • 实验二-密码引擎-3-sdf接口
    两人一组完成下面任务0分析代码接口和智能钥匙的接口的异同代码接口和智能钥匙的接口是两种不同类型的接口,它们有一些异同点:类型:代码接口:通常指软件编程中的接口,用于不同软件组件之间的通信和交互。智能钥匙接口:指用于与智能钥匙通信和控制的物理接口,比如RFID接口、蓝牙接......
  • 实验二-密码引擎-3-sdf接口
    一、任务详情两人一组完成下面任务0分析代码接口和智能钥匙的接口的异同1.编译运行附件中代码,提交运行结果截图2.修改test.c完成包含小组内成员的学号姓名的文件的sm3hash运算,sm4加密解密,提交代码和运行结果截图。3.完成完成包含小组内成员的学号姓名的文件的签名验签名,......
  • 20211314实验二-密码引擎-3-sdf接口
    任务详情两人一组完成下面任务分析代码接口和智能钥匙的接口的异同编译运行附件中代码,提交运行结果截图修改test.c完成包含小组内成员的学号姓名的文件的sm3hash运算,sm4加密解密,提交代码和运行结果截图。完成完成包含小组内成员的学号姓名的文件的签名验签名,提交代码和运行......
  • java中接口多个实现类,如何指定实现类,根据子类类型选择实现方法
    问题背景在Java代码中,经常会遇到一个接口有多个实现的情况。而这些实现类的参数又是不同的子类,这时候我们该如何选择正确的实现方法呢?解决方案我们可以通过判断参数的子类类型来选择正确的实现方法。具体实现可以使用Java中的instanceof关键字,它可以判断一个对象是否是某个类的......
  • 视频汇聚/安防监控平台EasyCVR调试pprof接口信息泄露如何处理?
    EasyCVR视频融合平台基于云边端架构,可支持海量视频汇聚管理,能提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、智能分析等视频服务。平台兼容性强,支持多协议、多类型设备接入,包括:国标GB/T28181协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SD......