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

JAVA零基础小白自学日志——第十九天

文章目录

  • 1.private(私有)
  • 2.static(静态)
  • 3.final(最终)
    • [1].fianl修饰变量
    • [2].fianl修饰方法
    • [3].fianl修饰类
    • [4].为什么需要fianl关键字修饰类和方法
  • 4.private\static\final的共同点
  • 5.同名变量
  • 6.方法重载和方法重写

今日提要:private\static\final修饰词;同名变量;方法重载和方法重写

1.private(私有)

  • 类不能标记为private,就是所谓的私有类,但在一些特殊的情况下有一种类被称为内部类;虽然类不能被标记为private,但是类依然有访问范围权限,所有不被public修饰的类,都是非公共类,非公共类大多(protected的受众范围稍大)只能被这个类所在的包中的其它类扩展;
  • 被private修饰的方法,再次重复,不会被继承,因为私有方法对外来说不可见,你看见了也是不可见,编译器默认你看不见,虽然都是你写的,你还是看不见,嗯;所以一旦方法被private修饰了,那么这个方法就不存在继承和重写;

2.static(静态)

  • static修饰变量我之前写过了,修饰方法也写过了,不过没涉及到方法的继承和多态
    看段代码吧
public class TestOne {public static void main(String[] args) {Animal a = new Wolf();a.roam();		}}
class Animal{public static void roam () {System.out.println("动物在闲逛");}
}	class Wolf extends Animal{public static void roam() {System.out.println("狼在原地盘桓");}
}

输出结果:

动物在闲逛
  • 虽然上面代码里面的父类和子类里面有参数、返回值类型、访问权限范围都一样的同名方法,但是却无法完成方法重写,很明显static阻止了方法的重写,这点在写代码时要注意;

3.final(最终)

[1].fianl修饰变量

  • fianl关键字修饰基础类型变量,其值一旦初始化就不可以改变;
  • fianl关键字修饰引用型变量,对其初始化之后,便不能让其指向另一个对象;
  • fianl关键字修饰的都是常量,fianl关键字可以修饰局部变量;

[2].fianl修饰方法

  • fianl关键字修饰的方法不能被子类重写;
  • 当父类方法为fianl关键字修饰的,子类方法不能含有方法名、参数类型、参数个数和参数顺序都一样的方法;
  • 如果父类有fianl关键字修饰的方法,而此方法权限范围修饰为private(私有),这个并不影响子类有相同名称的方法,原因简单,还是那句话,private不能继承,不可见;

[3].fianl修饰类

  • fianl关键字修饰的类为最终类,最终类处于继承链末端,没有子类可以继承终类;
  • fianl关键字修饰的类,它的类内方法也默认为fianl方法;
  • fianl关键字修饰的类中的变量是可以改变的;

[4].为什么需要fianl关键字修饰类和方法

  • 终类其实底层逻辑就是阻止一个类派生子类,但从安全性的角度去考虑,如果你知道一个类的最终执行结果,并且始终按照这个结果执行,而不会被子类重写,那你就需要定义一个终类,Java API中存在大量的终类,例如:String类就是一个fianl,String是不允许随便更改的;
  • fianl修饰方法其实也是一样的逻辑,如果你要保证一个特定的方法不会被重写,你就可以把那个方法标记为fianl,如果一个类中所有的方法都需要避免被重写,那就需要把这个类标记为fianl;

4.private\static\final的共同点

private\static\final关键字修饰的方法和变量,都属于编译期绑定,也就是早期绑定,都起到了,阻止继承的作用

5.同名变量

如果子类拥有和父类一样的变量名,子类变量将屏蔽父类变量的继承,这点很重要,切记,切记!

6.方法重载和方法重写

项目方法重载方法重写
简介重载,只是在同个类中,有相同方法名的不同方法而已,与继承和多态没有任何关系在继承关系中子类方法对父类(超类、基类)方法的覆盖重写
同一个类有继承关系的类
方法名相同相同
方法参数参数个数、类型、顺序都不同参数列表相同
返回值类型可以不同必须相同
调用方式参数决定创建的实际对象决定
绑定早期绑定,编译期绑定后期绑定,动态绑定
private\static\final不影响阻止继承,不会产生重写

真正的Java代码之路,应该说是从继承和多态开始的,这才是面向对象OO的基础知识,预祝大家和我一样学的愉(tou)快(yun);

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【音视频】AAC编码器与ffmpeg生成AAC数据
  • 机器学习·概率论基础
  • conda:导出与创建环境快照
  • Github 2024-07-20 开源项目日报Top10
  • Jupyter Notebook与机器学习:使用Scikit-Learn构建模型
  • 【开源库学习】libodb库学习(一)
  • sourcetree中常用功能使用方法及gitlab冲突解决
  • Git提交到错误分支怎么办?(解决办法)
  • 解决前端开发中的浏览器兼容性问题
  • 区块链技术和系统;ZKRollup ;区块链交易打包和审查
  • IOT 的 10 种常见协议、组网模式、特点及其使用场景浅析
  • 如何判断自己的数据格式适合使用json还是Excel的形式存入neo4j数据库
  • LeYOLO, New Scalable and Efficient CNN Architecture for Object Detection
  • 【STM32】RTT-Studio中HAL库开发教程三:IIC通信--AHT20
  • SQL Server数据库守护者:自定义备份与恢复策略全指南
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • express.js的介绍及使用
  • Git 使用集
  • Javascript弹出层-初探
  • JavaScript的使用你知道几种?(上)
  • Java应用性能调优
  • JS 面试题总结
  • Js基础——数据类型之Null和Undefined
  • Nodejs和JavaWeb协助开发
  • vue-cli3搭建项目
  • 工作手记之html2canvas使用概述
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 记一次和乔布斯合作最难忘的经历
  • 今年的LC3大会没了?
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 通过git安装npm私有模块
  • 我的业余项目总结
  • 找一份好的前端工作,起点很重要
  • 1.Ext JS 建立web开发工程
  • Java性能优化之JVM GC(垃圾回收机制)
  • 湖北分布式智能数据采集方法有哪些?
  • ​Python 3 新特性:类型注解
  • ​Spring Boot 分片上传文件
  • ​如何防止网络攻击?
  • (2)STM32单片机上位机
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (c语言)strcpy函数用法
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (LeetCode) T14. Longest Common Prefix
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (转)iOS字体
  • (转)母版页和相对路径
  • *** 2003
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .Net CF下精确的计时器
  • .NET 漏洞分析 | 某ERP系统存在SQL注入
  • .net反混淆脱壳工具de4dot的使用
  • .NET面试题(二)