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

类和对象一(从封装开始讲述)

目录:

一.封装 

二.封装扩展之包,自定义包

三.访问限定符  

四.static成员  

一.封装:封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行 交互。面向对象程序三大特性:封装、继承、多态。而类和对象阶段,主要研究的就是封装特性。

下面给一段,用private封装成员变量,的代码:这里用private把他们封装起来,封装后提供,get,set公开接口来给予部分功能访问。

class Student {//用private把他们封装起来private String name;private int age;private int id;public static String className;public void doClass (){}public Student(String name, int age, int id) {this.name = name;this.age = age;this.id = id;}//封装后提供,get,set公开接口来给予部分功能访问public String getName() {return this.name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getId() {return id;}public void setId(int id) {this.id = id;}
}

二.封装扩展之包:

1.在面向对象体系中,提出了一个软件包的概念,即: 为了更好的管理类,把多个类收集在一起成为一组,称为软件 。有点类似于目录。比如:为了更好的管理电脑中的歌曲,一种好的方式就是将相同属性的歌曲放在相同文件下,也可以对某个文件夹下的音乐进行更详细的分类。 (总之包就是文件夹)。下面可以理解一下
2. Java 中也引入了包, 包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式 ,比如:一 个包中的类不想被其他包中的类使用。包还有一个重要的作用: 在同一个工程中允许存在相同名称的类,只要处在不同的包中即可(可以解决相同名称的类重名)。
3. 可以 使用 import 语句导入包 .
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date date = new Date();
// 得到一个毫秒级别的时间戳
System.out.println(date.getTime());
}
}
如果需要使用 java.util 中的其他类 , 可以使用 import java.util.* 这里 "*" 通配符.  (但是我们更建议显式的指定要导入的类名. 否则还是容易出现冲突的情况.)
import java.util.*;
public class Test {
public static void main(String[] args) {
Date date = new Date();
// 得到一个毫秒级别的时间戳
System.out.println(date.getTime());
}
}

5.可以使用import static导入包中静态的方法和字段。代码如下:

注意事项 : import C++ #include 差别很大 . C++ 必须 #include 来引入其他文件内容 , 但是 Java 不需要。
import 只是为了写代码的时候更方便 . import 更类似于 C++ namespace using

import static java.lang.Math.*;
public class Test {
public static void main(String[] args) {
double x = 30;
double y = 40;
// 静态导入的方式写起来更方便一些.
// double result = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
double result = sqrt(pow(x, 2) + pow(y, 2));
System.out.println(result);
}
}

二.自定义包:

1.在文件的最上方加上一个 package 语句指定该代码在哪个包中 .
包名需要尽量指定成唯一的名字 , 通常会用公司的域名的颠倒形式 ( 例如 com.bit.demo1 ).

 

2. 先在 IDEA 中先新建一个包 : 右键 src -> 新建 -> 包. 再在 弹出的对话框中输入包名 最后在 包中创建类 , 右键包名 -> 新建 -> , 然后输入类名即可
3.自定义的包可以,自己实例化并且使用

三.访问限定符:

1.Java 中主要通过类和访问权限来实现封装: 类可以将数据以及封装数据的方法结合在一起 ,更符合人类对事物的认
知,而 访问权限用来控制方法或者字段能否直接在类外使用 Java 中提供了四种访问限定符:

 下面给一张逻辑清晰的图:(prtected下次补上)。

1.如果不加上面的访问限定符就是默认权限,默认权限在同一个包中(也就是同一个文件中)可以相互任意进行访问。下面给几个例子:

 2,如果加上public修饰则在不同包(文件夹)里都可以相互使用。

 四.static成员

1.static 修饰的成员变量,称为静态成员变量 ,静态成员变量最大的特性: 不属于某个具体的对象,是所有对象所共 享的 (所修饰的成员变量位于JVM的方法区里)

 2.静态成员变量特性

1. 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中
2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问
3. 类变量存储在方法区当中
4. 生命周期伴随类的一生 ( 即:随类的加载而创建,随类的卸载而销毁 )

3.说到加载:源代码储存在磁盘中--》javac编译成字节码文件--》java命令在JVM中运行(这个过程就叫做加载)(这个过程中类不会被重复加载)。

如图:

 4.static修饰成员变量访问可以通过对象的引用访,也可以通过类来访问,这里推荐类来访问

具体代码如下:

class Student {//用private把他们封装起来private String name;private int age;private int id;public static String className;public void doClass (){}public Student(String name, int age, int id) {this.name = name;this.age = age;this.id = id;}//封装后提供,get,set公开接口来给予部分功能访问public String getName() {return this.name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getId() {return id;}public void setId(int id) {this.id = id;}public void show() {System.out.println("姓名" +this.name +  "学号" + this.id +  "年龄"+ this.age  + " " + "班级" + className);}public static void main(String[] args) {Student student1 = new Student("xiaohua", 12, 23005678);
//        student1.className = "1";Student.className = "1班";//学生都属于一班student1.show();System.out.println(Student.className);Student student2 = new Student("xiaohua", 12, 23005678);
//        student1.className = "1";student2.show();Student student3 = new Student("xiaohua", 12, 23005678);
//        student3.className = "3";student3.show();}}

由于被static修饰这里的三个学生都属于同一个班。如图运行结果

 

这里一班是公用的三个学生的中,调试,如图:

相关文章:

类和对象一(从封装开始讲述)

目录: 一.封装 二.封装扩展之包,自定义包 三.访问限定符 四.static成员 一.封装:封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行 交互。面向对象…...

LeetCode100题总结

LeetCode100题总结 前言LeetCode100题总结题型梳理双指针11. 盛最多水的容器234.回文链表75.颜色分类206.反转链表142.环形链表215.三数之和 滑动窗口3. 无重复字符的最长子串209. 长度最小的子数组438. 找到字符串中所有字母异位词 广搜102. 二叉树的层序遍历200. 岛屿数量617…...

基于截断傅里叶级数展开的抖动波形生成

1、背景 抖动是影响信号完整性的重要因素。随着信号速率的不断提高,抖动的影响日益显著。仿真生成抖动时钟或抖动信号,对系统极限性能验证具有重要意义。抖动是定义在时域上的概念,它表征真实跳变位置(如跳边沿或过零点)与理想跳变位…...

图片标注编辑平台搭建系列教程(9)——支持撤销的画线行为

文章目录 背景渲染行为mouseDownmouseMovemouseDbclick总结背景 编辑器中的绘制,要想做的足够好,是需要支持撤销形点的,因为作业员在绘制过程中,可能会点错位置,需要及时撤销,否则影响编辑效率。撤销我们知道,需要通过ID编辑器的history的undo来实现,那么意味着,每一…...

赶紧收藏!2024 年最常见 100道 Java 基础面试题(四十一)

上一篇地址:赶紧收藏!2024 年最常见 100道 Java 基础面试题(四十)-CSDN博客 八十一、tcp为什么要三次握手,两次不行吗?为什么? TCP(传输控制协议)使用三次握手&#xf…...

使用自关联方法处理多表关系

使用自关联方法处理多表关系 这里通过省市区之间的关系来解释自关联的情况 在设置地址的过程中 , 不可避免的需要设置 , 省份 ,市以及区 而省市区三者之间的具有一定的关联关系 一个省份对应多个市 一个市对应多个区 如果通过设置主表从表关系则需要设置三张标分别对应省…...

annaconda详细解读换源文件

annaconda换源详细解读文件 annaconda换源详细解读文件 annaconda换源详细解读文件 #踩坑/annaconda换源详细解读通道问题 如何准确使用国内源高效安装GPU版本的Pytorch - 知乎 文件中的custom通道,需要自己手动添加到默认通道里面,记得后面更上/包名…...

AI大模型系列:编写高质量提示(prompt)的实践技巧

AI大模型系列专栏 文章收录于AI大模型系列专栏 文明基石,文字与数字的起源与演变自然语言处理,从规则到统计的演变AI魔法师,提示工程的力量编写高质量提示(prompt)的小技巧编写高质量提示(prompt&#xf…...

汽车EDI:安通林Antolin EDI 项目案例

安通林(Antolin)是一家全球性的汽车零部件制造商,专注于汽车内饰系统和零部件的生产,致力于创新和采用先进的技术。近年来 安通林Antolin 推动其供应商部署EDI系统,使得双方能够通过EDI传输业务单据,极大提…...

今日arXiv最热NLP大模型论文:揭露大语言模型短板,北京大学提出事件推理测试基准

人工智能领域又一里程碑时刻!北京大学、北京智源人工智能研究院等机构联合推出大型事件推理评测基准 。这是首个同时在知识和推理层面全面评估大模型事件推理能力的数据集。 总所周知,事件推理需要丰富的事件知识和强大的推理能力,涉及多种推…...

windows系统安装Ubuntu子系统

安装前先在 控制面板 中打开 程序与功能选项 ,点击 启用或关闭Windows功能: 勾选 适用于 Linux的Windows子系统 和 虚拟机平台 、 Hyper-v 。 重启电脑后再 Microsoft Store Windows应用商店 中下载合适的Ubuntu版本。 运行Ubuntu程序,如出现…...

电脑复制和粘贴的时候会出现Hello!

电脑不管是Microsoft Excel还是Microsoft Word复制之后粘贴过来就出现HELLO,当复制粘贴文件的时候就会出现WINFILE; 具体现象看下面两个图片: 这是因为winfile 文件病毒(幽灵蠕虫病毒),每月的28号发作; 症状…...

AI新视界:探索Baidu Comate的前沿科技

前言 Baidu Comate(智能代码助手)是基于文心大模型,结合百度积累多年的编程现场大数据和外部优秀开源数据,打造的新一代编码辅助工具。拥有代码智能、场景丰富、创造价值、广泛应用等多重产品优势,可实现“帮你想、帮…...

唐山知识付费系统搭建教程,女性创业难吗?2017十佳女性创业故事:黑科技创业“女神”

女性创业难吗?2017十佳女性创业故事:黑科技创业“女神”!创业似乎一直是一个比较热门的话题,女性创业也是一个很有争议的问题。女性创业难吗?看看2017十佳女性创业故事:黑科技创业“女神”。 阿里研究院、中国企业家木兰汇、阿里巴巴创新中…...

Hotcoin Research | 模块化将是大势所趋:拆解模块化区块链的现状和未来

关于模块化区块链叙事的讨论源于Celestia和其代币TIA的亮眼表现。实际上,模块化是未来区块链设计的主要发展方向和大势所趋。模块化区块链就像乐高积木一样,将区块链系统拆分为可重用的模块,通过定制组合可实现不同功能的区块链网络。这种灵活…...

Unity VR在编辑器下开启Quest3透视(PassThrough)功能

现在有个需求是PC端串流在某些特定时候需要开启透视。我研究了两天发现一些坑,记录一下方便查阅,也给没踩坑的朋友一些思路方案。 先说结论,如果要打PC端或者在Unity编辑器中开启,那么OpenXR当前是不行的可能还需要一个长期的过程,必须需要切换到Oculus。当然Unity官方指…...

使用 git rebase 还是 git merge,优缺点

在开发过程中使用 git rebase 还是 git merge,优缺点分别是什么? - 知乎 看一下gerrit的模式 永远rebase 绝对禁用merge 每一个commit都是一个完整的功能 保持清晰直观的提交历史 所以,main 分支是万万不能使用 rebase 的!&#…...

李飞飞团队 AI4S 最新洞察:16 项创新技术汇总,覆盖生物/材料/医疗/问诊……

不久前,斯坦福大学 Human-Center Artificial Intelligence (HAI) 研究中心重磅发布了《2024年人工智能指数报告》。 作为斯坦福 HAI 的第七部力作,这份报告长达 502 页,全面追踪了 2023 年全球人工智能的发展趋势。相比往年,扩大了…...

springboot整合rabbitmq的不同工作模式理解

前提是已经安装并启动了rabbitmq,并且项目已经引入rabbitmq,完成了配置。 不同模式所需参数不同,生产者可以根据参数不同使用重载的convertAndSend方法。而消费者均是直接监听某个队列。 不同的交换机是实现不同工作模式的关键组件.每种交换…...

Ansible(二)

一、Playbook基础 1.1 Playbook定义 Playbook其实是Ansible服务的一个配置文件,Ansible使用Playbook的YAML语言配置编写成操作需求,实现对远端主机或策略部署,实现对远端主机的控制与管理。 1.2 Playbook组成 Tasks:任务&…...

IDM开源工具免费使用指南:从安装到高级配置的完整实践

IDM开源工具免费使用指南:从安装到高级配置的完整实践 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script Internet Download Manager(IDM&am…...

内网外网互传文件慢怎么办?高速传输协议该如何选择?

企业日常办公中,内外网文件互传卡顿、中断、速度不达标的问题十分普遍,尤其在大文件与批量文件场景下,传统方式难以满足稳定高效的需求。选择合适的高速传输方案,直接影响跨网协作效率与数据安全,这也是多数运维与业务…...

告别繁琐操作:用快马AI定制你的智能FileZilla,实现自动化文件管理

告别繁琐操作:用快马AI定制你的智能FileZilla,实现自动化文件管理 作为一个经常需要处理文件传输的开发人员,我深知传统FTP工具的局限性。每次都要重复配置服务器信息,手动同步文件夹,还要花时间筛选文件,…...

掌握 Skills 技术引爆 Agent 开发!像装 App 一样让 AI 变“超人”!

本文介绍了 AI Skills 的概念,将其描述为可像人类一样动态加载和使用的“能力模块”,用于解决传统 Agent 开发的痛点,如重复造轮子、能力边界模糊和难以规模化。文章详细阐述了 Skills 的核心特征(模块化、可组合、热插拔、标准化…...

SQLite在线查看器:浏览器中的数据库管理革命

SQLite在线查看器:浏览器中的数据库管理革命 【免费下载链接】sqlite-viewer View SQLite file online 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-viewer 在数据驱动的时代,SQLite数据库无处不在——从移动应用到桌面软件,…...

基于python的一线式酒店管理系统

目录 同行可拿货,招校园代理 ,本人源头供货商功能模块设计技术实现要点扩展功能建议异常处理机制 项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 同行可拿货,招校园代理 ,本人源头供货商 功能模块设计 前台管理模块 客房预…...

高效获取B站视频到本地存储:BilibiliDown工具全攻略

高效获取B站视频到本地存储:BilibiliDown工具全攻略 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/…...

运动生物力学数据分析全流程dz: 运动学分析:Qualysis_Vicon动作捕捉数据处理(关节角度、角速度、重心轨迹等) 动力学分析:AMTI_Kistler测力台数据处理、逆动力学计算(关节力、力

运动生物力学数据分析全流程dz: 运动学分析:Qualysis/Vicon动作捕捉数据处理(关节角度、角速度、重心轨迹等) 动力学分析:AMTI/Kistler测力台数据处理、逆动力学计算(关节力、力矩、功率) 肌电信…...

ESP32驱动MT6826S磁编码器:从接线防烧到实时速度计算(附完整Arduino库)

ESP32与MT6826S磁编码器实战指南:安全接线与高效数据采集 1. 硬件连接:避开那些可能毁掉你项目的陷阱 MT6826S磁编码器作为一款高精度角度测量器件,在机器人关节控制、无人机云台稳定等场景中表现优异。但许多开发者第一次接触这款编码器时&a…...

实战避坑:在Windows上用C++/WinRT搞定双模蓝牙(EDR+Ble)通信的完整流程

实战避坑:在Windows上用C/WinRT搞定双模蓝牙(EDRBle)通信的完整流程 蓝牙技术在现代设备中无处不在,但对于开发者而言,实现Windows桌面应用与双模蓝牙设备(同时支持经典蓝牙EDR和低功耗蓝牙BLE)…...