JavaSE - 面向对象编程02

01 static关键字

01_01 static修饰成员变量

【1】成员变量的分类及特点:

   ① 类变量:被static修饰,随类一起加载,在计算机中只有一份,被该类的所有对象共享。

   ② 实例变量(对象的变量):不被static修饰,属于每个对象,每个对象中都有一份。

【2】如何访问:

   ① 类变量:类名. (推荐) 或 对象名. (不推荐)

   ② 实例变量(对象的变量):对象名.

【3】讨论:为什么不能通过类名访问实例变量?答:如果通过类名访问实例变量,由于实例变量每个对象中都有一份,编译器并不知道到底访问哪个对象中的。

01_02 成员变量的执行原理

把调用main方法的Test类加载到方法区中 --》在栈区为main方法开辟栈帧空间 --》将Student类加载到方法区中,并检查学生类中有没有类变量,如果发现有类变量会立即把类变量加载到堆内存中去,学生类是可以找到类变量的 --》把类变量name的值修改成袁华 --》在main方法的栈帧中为引用s1开辟空间 --》在堆区为学生对象s1开辟空间,学生类中有为实例变量开辟空间,并且记住了类的地址 --》把学生对象s1的地址赋值给引用s1 --》通过s1中的地址找到学生对象s1发现name并不是实例变量后,通过类的地址找到学生类,再通过学生类找类变量name把值修改成马冬梅。

01_03 两种成员变量的应用场景

【1】类变量:

注意1:类变量一般使用public修饰,代表对外完全公开暴露,因为类变量数据只有一份,它的目的就是希望别人都来共享它访问它。

注意2:在自己类中访问自己的类变量可以省略前面的类名不写。

【2】实例变量:每个对象都要有一份且数据各不同。

01_04 static修饰成员方法

【1】成员方法的分类,特点,访问:

01_05 成员方法的执行原理

把调用main方法的Test类加载到方法区中 --》在栈区为main方法开辟栈帧空间 --》将Student类加载到方法区中,在学生类中找到printHelloHorld方法,发现这个方法由static修饰,是可以通过类名/对象名进行调用的,所以将执行打印功能 --》在main方法的栈帧中为引用s开辟空间 --》在堆区为学生对象s开辟空间,学生类中有为实例变量开辟空间,并且记住了类的地址 --》把学生对象s的地址赋值给引用s --》通过引用s中的地址找到s对象,通过类的地址找到学生类,在学生类中找到printHelloHorld方法,发现这个方法由static修饰,是可以通过类名/对象名进行调用的,所以将执行打印功能 --》通过引用s中的地址找到s对象,通过类的地址找到学生类,在学生类中找到printPass方法,发现这个方法是实例方法,只能通过对象名调用,而本次调用的确是通过对象进行调用的,所以执行的相关功能 --》在学生类中找到printPass方法,发现这个方法是实例方法,只能通过对象名调用,而本次调用是通过类名进行调用的所以报错。

01_06 类方法的应用场景

 

 01_07 使用成员方法的注意事项

02 static的应用:代码块 

          实例代码块的应用:把构造器中的重复代码拿到实例代码块中。

03 static的应用:单例设计模式

 

04 搞懂main方法

【1】main方法是什么?main方法就是一个类方法。

【2】main方法是如何直接跑起来的呢?答:我们用java命令执行Java程序的时候,虚拟机会用main方法所在类的类名直接调用main方法,从而触发main方法的执行。

【3】main方法的参数:在执行java程序时可以给main方法进行传参(了解即可)

05 继承

05_01 概念、特点

  【注意】:Java中的继承指的是子类能不能用。

05_02 继承的执行原理

05_03 继承的好处

【提问】:在上图代码中,怎样在子类中使用父类被封装的name数据?答:调用父类中的getName方法。

05_04 权限修饰符

05_05 单继承

05_06 Object类

【1】说明:Object类是所有类的祖宗类,要么直接继承,要么间接继承Object类,也就是说我们无论使用哪个类创建对象,它都是可以调用Object类中的相关方法的。

【2】进一步说明:如果我们在设计类时如果没有明确指定它继承于哪一个类那么这个类默认继承于Object类;如果有明确指定继承于哪一个类,由于java只能单继承,所以该类没有直接继承Object类,但它的父类或爷爷辈如果没有指定父类,则该类的父类或爷爷辈也是默认继承于Object类的,此时该类也将间接继承Object类。

05_07 方法重写

方法重写的应用实例:对象直接用sout输出的时候,默认会去调toString()方法(返回的是一个字符串)的,返回的是这个对象的地址,在开发中我们打印对象,更多的希望看到这个对象中的内容,那么我们可以在子类中去重写toString方法让返回结果为对象的内容。

05_08 子类中访问其他成员的特点

05_09 子类构造器的特点

 

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Redis命令:redis-cli

Redis 命令用于在 redis 服务上执行操作。 要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们之前下载的的 redis 的安装包中。 语法 Redis 客户端的基本语法为: $ redis-cli 实例 以下实例讲解了如何启动 redis 客户端: 启动…

7-ZIP工具的功能分享:合并分卷压缩文件

在日常工作中,有些大文件无法单独传输,我们通常会通过压缩拆分成多个分卷文件来完成传输。 当完成传输后,不想要这么多分卷文件的时候,就可以通过7-ZIP工具的合并功能来解决这个问题。下面一起来看看,具体如何操作。 …

达芬奇竖屏导出有黑屏解决方案

文章目录 项目设置导出设置 初学达芬奇,导出的时候,总是有黑边。 经过研究,才发现导出的时候的分辨率和项目分辨率 2个地方都要设置,否则导出就会导致有黑边。 项目设置 点击 文件 选择项目设置 选择竖屏分辨率 导出设置

基于深度学习,通过病理切片直接预测HPV状态|文献速递·24-09-16

小罗碎碎念 有段时间没有写文献速递的推文了,搞得自己今天写还怪不适应的。 今天所有的推文,都是围绕一个系统的问题展开——既研究了HPV与EBV在头颈癌/鼻咽癌中的致病机制,也总结了如何结合病理组学直接由WSI预测HPV状态——没办法&#x…

SQL注入+CTF实例

SQL注入的做题步骤 1.判断数字型还是字符型 数字型: select * from table where id$id; 字符型: select * from table where id$id; # 一般是单引号闭合,也有可能是双引号,又或者是)、")、))等等都有可能 可以用and 11和an…

【渗透测试】——VulnHub靶机渗透实战 | HA:Joker

📖 前言:Vulnhub 是一个漏洞靶场平台,里面含有大量的靶场镜像,只需要下载虚拟机镜像,导入 VMWare 或者 VirtualBox 即可启动靶场。本文将从环境搭建、端口扫描、目录扫描到信息提取和突破8080端口,尽可能排…

PMP--一模--解题--101-110

文章目录 11.风险管理--过程--识别风险→实施定性风险分析→实施定量风险分析→规划风险应对→实施风险应对→监督风险101、 [单选] 在项目即将进入收尾阶段时,项目经理发现了一项原来没有考虑到的新风险。该风险一旦发生,可能给最终的可交付成果带来重要…

828华为云征文|Flexus X实例Docker+Jenkins+gitee实现CI/CD自动化部署-解放你的双手~

目录 前言 实验步骤 环境准备 安装Portainer 拉取镜像 更换镜像源 启动容器 安装jenkins 拉取镜像 获取管理员密码 新建流水线项目 Portainer配置 gitee配置WebHooks 构建 修改代码,自动部署 前言 🚀 828 B2B企业节特惠来袭,…

【自学笔记】支持向量机(2)——核函数

引入 核函数的功能是将一组数据映射到更高维的特征空间,这样可以让在低维无法线性分类的数据能够在高维空间下被分类。   可以证明,如果原始数据是有限的维度,那么一定存在一个高维特征空间使得样本线性可分。 文章内容由《机器学习》相关内…

道路驾驶视角人车检测数据集 16000张 带标注 voc yolo

随着智能驾驶技术和车辆辅助系统的快速发展,道路驾驶视角下的多目标检测成为了保障行车安全的关键技术之一。为了提高自动驾驶车辆以及辅助驾驶系统的性能,需要大量的高质量标注数据来训练这些系统。本数据集旨在为道路驾驶视角下的人车检测提供高质量的…

linux 操作系统下dd 命令介绍和使用案例

linux 操作系统下dd 命令介绍和使用案例 1. dd 命令简介 dd 命令是一个功能强大的 Linux 工具,用于转换和复制文件。它的主要用途包括: 创建引导盘备份和恢复磁盘分区创建磁盘镜像清除磁盘数据测试读写性能 dd 命令的语法与大多数 Linux 命令有所不同,使用 optionvalue 的形…

[YM]模板-顺序表

概念: 顺序表是一种线性表,作为线性表的一种,它是用一段物理地址连续的存储单元依次存储数据元素的线性结构 模板: typedef int T; typedef struct Node{T *data;int last;int MaxSize; }*LinearList; //1 初始化顺序表 int Ini…

【C++学习】 IO 流揭秘:高效数据读写的最佳实践

✨ 今朝有酒今朝醉,明日愁来明日愁 🌏 📃个人主页:island1314 🔥个人专栏:C学习 ⛺️ 欢迎关注:👍点赞 👂&#x1f3f…

Java之线程篇四

目录 volatile关键字 volatile保证内存可见性 代码示例 代码示例2-(volatile) volatile不保证原子性 synchronized保证内存可见性 wait()和notify() wait()方法 notify() 理解notify()和notifyAll() wait和sleep的对比 volatile关键字 volati…

基于yolov8的茶叶病害检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的茶叶病害检测系统,是利用深度学习技术,特别是YOLOv8这一先进的目标检测算法,来精准识别和监测茶叶生长过程中出现的各种病害。该系统通过无人机、地面机器人或固定摄像头等设备,定期采集茶园的高分辨率…

MATLAB窗口操作常用命令

MATLAB窗口操作常用命令 命令功能clc清除窗口命令clear commandclf清除图形对象(窗口)clear清除工作区所有变量 释放内存clear all清除工作区的所有变量和函数type显示指定文件的所有内容与CMD命令类似dir查看当前工作文件夹中的内容与CMD命令类似save保存工作区或工作区中任何…

多维度智能体验:引领未来的RAG型知识图谱数字

随着人工智能技术的发展,传统的数字人已逐渐普及,但大多数仍然局限于简单的文本回复或预设答案,缺乏深入的语义理解和个性化互动能力,难以应对复杂、多维度的问题交互。不同于传统的数字人,英智知识图谱RAG型数字人提供…

.NET源码的在线探索:source.dot.net网站深度解析

一个在线的.NET源码查询网站为https://source.dot.net/。这个网站为开发者提供了便捷的.NET源码查询服务,无需从GitHub等代码托管平台下载整个源代码库,即可在线浏览和查询.NET框架及相关项目的源代码。 以下是该网站的一些主要功能特性: …

vue node node-sass sass-loader 版本 对应 与 兼容

警告: LibSass 和 Node Sass 已弃用。虽然它们将继续无限期地接收维护版本,但没有计划添加其他功能或与任何新的 CSS 或 Sass 功能兼容。仍在使用它的项目应该转移到 Dart Sass。 sass Sass是一种预处理器脚本语言,可以解释或编译成…

英语学习之vegetable

这里写目录标题 不熟悉的单词熟悉的句型 不熟悉的单词 brocolli (花)椰菜;西兰花🥦 spinach 菠菜 aubergine 茄子🍆 cabbage 卷心菜 zucchini/courgette 西葫芦 parsnip 欧洲防风,民间俗称“芹菜萝卜” …