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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48396.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习入门——与学习相关的技巧

前言 本章将介绍神经网络的学习中的一些重要观点,主题涉及寻找最优权重参数的最优化方法、权重参数的初始值、超参数的设定方法等 此外,为了应对过拟合,本章还将介绍权值衰减、Dropout等正则化方法,并进行实现。 最后将对近年来…

细说MCU用单路DAC模块设计和输出锯齿波的实现方法

目录 一、STM32G474RE的DAC模块 二、配置 1.配置DAC 2.选择时钟源和Debug 3.配置系统时钟 三、代码修改 1.启动DAC 2.给DAC的数据输出寄存器赋值 3.运行并观察输出 一、STM32G474RE的DAC模块 有些MCU本身就带有数/模转换器(Digital to Analog Converter,DAC)模块&am…

昇思25天学习打卡营第20天|Diffusion扩散模型

Mindspore框架利用扩散模型DDPM生成高分辨率图像(生成高保真图像项目实践) Mindspore框架利用扩散模型DDPM生成高分辨率图像|(一)关于denoising diffusion probabilistic model (DDPM)模型Mindspore框架利…

差分进化算法原理及其MATLAB/Python代码

1.算法简介 引用自:Storn R, Price K. Differential evolution–a simple and efficient heuristic for global optimization over continuous spaces[J]. Journal of global optimization, 1997, 11: 341-359. 今天给大家带来的是一个非常经典的智能优化算法–差分…

【多模态】42、LLaVA-UHD | 支持任意纵横比和大分辨率图像输入的 LLaVA

论文:LLaVA-UHD: an LMM Perceiving Any Aspect Ratio and High-Resolution Images 代码:https://github.com/thunlp/LLaVA-UHD 出处:清华 | 新加坡国立大学 | 中国科学院大学 一、背景 现有的很多 LMM 都是将图像处理成固定的纵横比&…

Ubuntu编译ffmpeg并添加cmake工程

文章目录 前言前提须知为什么要自己编译 FFmpeg前提软件包与工具的安装编译ffmpeg写CMakeList.txt包含ffmpeg到我们项目中 总结 前言 FFmpeg 是一个领先的多媒体框架,能够解码、编码、转码、复用、解复用、流化、过滤和播放几乎所有人类和机器创造的内容。FFmpeg 包…

探索Web世界:WebKit的地理位置API

探索Web世界:WebKit的地理位置API 在数字时代,地理位置信息已成为许多在线服务和应用的关键组成部分。WebKit,作为众多流行浏览器的内核,如Safari、QQ浏览器等,提供了强大的地理位置API(Geolocation API&a…

设计模式11-原型模式

设计模式11-原型模式 写在前面对象创建模式典型模式原型模式动机结构代码推导应用特点要点总结 原型模式与工厂方法模式对比工厂方法模式原型模式什么时候用什么模式 写在前面 对象创建模式 通过对象创建模式绕开动态内存分配来避免创建过程中所导致的耦合过紧的问题。从而支…

数学建模--国赛备赛---TOPSIS算法

目录 1.准备部分 1.1提交材料 1.2MD5码相关要求 2.TOPSIS算法 2.1算法概述 2.2基本概念 2.3算法核心思想 2.4拓展思考 3.适用赛题 3.1适用赛题说明 3.2适用赛题举例 4.赛题分析 4.1指标的分类 4.2数据预处理 4.2.1区间型属性的变换 4.2.2向量规范化 4.3数据加…

基于 Three.js 的 3D 模型加载优化

作者:来自 vivo 互联网前端团队- Su Ning 作为一个3D的项目,从用户打开页面到最终模型的渲染需要经过多个流程,加载的时间也会比普通的H5项目要更长一些,从而造成大量的用户流失。为了提升首屏加载的转化率,需要尽可能…

IDEA的断点调试(Debug)

《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试(Debug) 第七章 …

【内网安全】横向移动-Kerberos-SPN-WinRM-RDP

目录 环境介绍与横向移动前置域横向移动-WinRM-WinRS移动条件: 步骤0、攻击机开启winrm服务:1.CS探针5985端口:2.连接目标主机并执行命令:3.上线CS&MSF:4.CS内置横向移动-winrm 域横向移动-RDP简介与条件RDP横向移动连接的三种…

(C++二叉树06) 二叉搜索树的最小绝对查和众数 二叉树的最近公共祖先

530、二叉搜索树的最小绝对差 递归法&#xff1a; class Solution { public:vector<int> vec;void traversal(TreeNode* root) {if(root NULL) return;traversal(root->left);vec.push_back(root->val);traversal(root->right);}int getMinimumDifference(Tr…

TCP状态转换详解

1.什么是TCP的状态转换 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输层协议。在 TCP 连接的生命周期中&#xff0c;连接的状态会随着不同阶段的通信而发生变化&#xff0c;这些变化被称为状…

嵌入式Linux入门知识点汇总-启动过程、设备树、设备框架、锁

目录 1.BootLoader启动过程? 引导加载程序(Bootloader) 补充u-boot的理解 通用的bootloader 2.系统调用过程? 3.设备驱动模型的三个重要成员? 4.驱动和设备注册是否存在先后顺序? 5.framebuffer机制? 6.字符设备和块设备的区别并分别举例? 1.字符设备 2.块设备…

SVN 服务 安装部署 Docker(compose) 方式

通过 dockerhub 或者 命令行运行 &#xff1a; docker search svn 查看 svn 的镜像 如命令行&#xff1a; [rootSGP ~]# docker search svn NAME DESCRIPTION STARS OFFICIAL AUTOMATED garethflower…

ABC(363)

A - Piling Up(模拟) 题意&#xff1a;输入一个数字&#xff0c;数字介于1-99显示一次^,100-199显示两次^....增加显示的^所需的最小的评分增幅 分析&#xff1a;算比次数字大且为100的倍数的最小值-此数字 代码&#xff1a; #include<bits/stdc.h> using namespace …

景联文科技构建高质量心理学系知识图谱,助力大模型成为心理学科专家

心理大模型正处于快速发展阶段&#xff0c;在临床应用、教育、研究等多个领域展现出巨大潜力。 心理学系知识图谱能够丰富心理大模型的认知能力&#xff0c;使其在处理心理学相关问题时更加精确、可靠和有洞察力。这对于提高心理健康服务的质量和效率、促进科学研究以及优化教育…

【Django】网上蛋糕商城后台-订单管理

概念 前面通过多篇文章以完全实现了用户在网上蛋糕商城平台上的所有功能和操作&#xff0c;从本文开始&#xff0c;实现网站的后台管理功能的介绍和操作。 导入静态资源 在static文件夹下&#xff0c;创建admin文件夹&#xff0c;在该文件夹下导入静态资源 在templates文件夹…

cs224w笔记(p5)

链接预测任务的两种类型&#xff1a;随机缺失边&#xff1b;随时间演化边。 第一种假设可以以蛋白质之间的交互作用举例&#xff0c;缺失的是研究者还没有发现的交互作用。 第二种假设可以以社交网络举例&#xff0c;随着时间流转&#xff0c;人们认识更多朋友。 基于相似性进…