复习0206
目录
一、访问修饰符
一、权限范围
二、注意事项
二、封装(面向对象的三大特征之一)
一、封装的好处
二、封装的实现步骤
三、和构造器结合
四、练习题中的细节
一、访问修饰符
一、权限范围
访问修饰符用于控制方法和属性(成员变量)的访问权限
四种访问修饰符:public、protected、默认、 private
四种访问修饰符的权限(图片)
二、注意事项

包的优先级>类,
package com.hspedu.modifier;public class A {//四个属性,分别使用不同的访问修饰符来修饰public int n1 = 100;protected int n2 = 200;int n3 = 300;private int n4 = 400;public void m1(){//在同一个类中该方法可以访问public、protected,默认,private修饰的属性或方法// 属性System.out.println("n1=" + n1 + " n2=" + n2 + " n3=" + n3 +" n4=" + n4);}}
package com.hspedu.pkg;import com.hspedu.modifier.A;public class Test {public static void main(String[] args) {A a = new A();//在不同包下只能访问public修饰的属性或方法//不可以访问protected,私有,private修饰的属性或方法System.out.println("n1 =" + a.n1);a.m1(); }
}
比如下面代码中,方法m1()是public修饰的,但是其中的属性n1-n4是四种访问修饰符修饰的,但是在pkg包中可以访问方法m1,自然也可以访问n1-n4
二、封装(面向对象的三大特征之一)
英语:encapsulation
一、封装的好处
1)隐藏实现细节
2)对数据进行验证,保证安全合理
二、封装的实现步骤
需要使用set和get方法
1)将属性进行私有化 private (只有在同一个类中才可以访问,外部不能修改属性)
2)提供一个public set方法,用于对属性判断并赋值(比如第七章作业中的十三题,设置的setRadius方法),用于对属性进行判断并赋值
例子
package com.hspedu.encap;public class Encapsulation0207 {public static void main(String[] args) {Person0207 person0207 = new Person0207();person0207.setName("jack解开了");person0207.setAge(190);person0207.setSalary(30000);System.out.println(person0207.info());//工资不能直接查看,只能通过get方法查看//System.out.println(personRev.salary);System.out.println(person0207.getSalary());//如果直接使用构造器指定属性,那么get和set方法的逻辑判断就失效了Person0207 smith = new Person0207("smith", 200, 50000);System.out.println("==========smith的信息===========");System.out.println(smith.info());}
}
//不能随便查看人的年龄,工资等隐私,并对设置的年龄进行合理的验证。
//年龄合理就设置,否则给默认年龄,必须在 1-120,年龄,
//工资不能直接查看,name的长度在 2-6字符 之间
class Person0207 {private String name;private int age;private double salary;public Person0207() {}//有三个属性的构造器public Person0207(String name, int age, double salary) {
// this.name = name;
// this.age = age;
// this.salary = salary;//将set方法写在构造器中,这样仍然可以验证//在创建新对象的时候,name/age/salary依次被传参进来//然后依次调用以下set方法,进行逻辑判断,即套娃setName(name);setAge(age);setSalary(salary);}public void setName(String name) {// name的长度在 2-6字符 之间if(name.length() >= 2 && name.length() <= 6){this.name = name;}else{System.out.println("name的长度需要在2-6字符之间,赋予默认名字");this.name = "无名";}}public int getAge() {return age;}public void setAge(int age) {//年龄合理就设置,否则给默认年龄,必须在 1-120if(age >= 1 && age <= 120){this.age = age;}else{System.out.println("你设置的年龄不对,需要在(1-120),给出默认年龄18");this.age = 18;}}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}public String info(){return "个人信息:name=" + name + " age=" + age + " salary=" + salary;}
}
三、和构造器结合
操作:在构造器(构造方法)内调用setXxx()方法
public Person0207(String name, int age, double salary) {
// this.name = name;
// this.age = age;
// this.salary = salary;//将set方法写在构造器中,这样仍然可以验证//在创建新对象的时候,name/age/salary依次被传参进来//然后依次调用以下set方法,进行逻辑判断,即套娃setName(name);setAge(age);setSalary(salary);}
四、练习题中的细节
1.属性都设置为private
2.无参构造器和有参构造器都需要写上(构造器和set方法结合)
package com.hspedu.encap;public class Account0207 {private String name;private double bala;private String passwd;public Account0207() {}//set方法和构造器结合public Account0207(String name, double bala, String passwd) {setName(name);setBala(bala);setPasswd(passwd);}public String getName() {return name;}public void setName(String name) {int len = name.length();if(len == 2 || len == 3 || len ==4 ){//只要满足一个条件就不会再判断后面的this.name = name;}else{System.out.println("要求名字的长度为2位或3位或4位,输入有误,给出默认名字");this.name = "无名";}}public double getBala() {return bala;}public void setBala(double bala) {if(bala > 20){this.bala = bala;}else{System.out.println("要求余额必须>20,给出值");this.bala = 0;}}public String getPasswd() {return passwd;}public void setPasswd(String passwd) {//密码必须是六位if(passwd.length() == 6){this.passwd = passwd;}else{System.out.println("密码必须是六位,如果不满足,则赋默认值");this.passwd = "000000";}}public String info(){return "账户姓名:" + name + " 余额:" + bala + " 密码:" + passwd;}
}
package com.hspedu.encap;public class TestAccount0207 {public static void main(String[] args) {Account0207 account0207 = new Account0207();account0207.setName("李白");account0207.setBala(13);account0207.setPasswd("6666");System.out.println(account0207.info());System.out.println("==================");Account0207 account0208 = new Account0207("李响", 8, "888888");System.out.println(account0208.info());}
}
相关文章:
复习0206
目录 一、访问修饰符 一、权限范围 二、注意事项 二、封装(面向对象的三大特征之一) 一、封装的好处 二、封装的实现步骤 三、和构造器结合 四、练习题中的细节 一、访问修饰符 一、权限范围 访问修饰符用于控制方法和属性(成员变量…...
小红书如何查看笔记
小红书如何查看笔记 在小红书上找关键词的 6 大方法进阶版想要查找品类词、行业词、产品词、长尾词的小伙伴看过来,这一次我们就来给大家升级了 6 种找关键词的方法,也是我们的进阶版。 第一种,下拉框查找。我们只需要在小红书 AP 输入主要的…...
linux001之linux系统部署安装
注意:本次安装讲解以乌班图(Ubuntu) 虚拟机来说明讲解,既然学习linux,就无需用图形界面了,直接用服务器版本 1. 下载乌班图 网址:https://www.ubuntu.org.cn/download/server 然后就可以看到右下角有下载提示ÿ…...
服务异步通信 RabbitMQ-高级篇
服务异步通信RabbitMQ-高级篇服务异步通信RabbitMQ-高级篇1.消息可靠性1.1.生产者消息确认1.1.1.修改配置1.1.2.定义Return回调1.1.3.定义ConfirmCallback1.2.消息持久化1.2.1.交换机持久化1.2.2.队列持久化1.2.3.消息持久化1.3.消费者消息确认1.3.1.演示none模式1.3.2.演示aut…...
【PR】零基础快速入门教程
【PR】零基础快速入门教程PR(Premiere)能做什么?PR欢迎界面及新建项目工作区及窗口说明导入文件建立序列视频剪辑添加字幕导出视频使用软件:Premiere2020新年卷起来,写文章已近不能满足与我了,我要向着更前…...
Matlab 点云迭代加权最小二乘法拟合平面(抑制噪声)
不要虚掷你的黄金时代,不要去倾听枯燥乏味的东西,不要设法挽留无望的失败,不要把你的生命献给无知、平庸和低俗。这些都是我们时代病态的目标,虚假的理想。 ----王尔德 文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 受到之前博客的启发(Matlab 点云最小二乘…...
2023 软件测试行业内卷动荡,红利期过去后,何去何从?
前段时间席卷全互联网行业的内卷现象,想必有不少人都深陷其中。其实刚开始测试行业人才往往供不应求,而在发展了十几年后,很多人涌入这个行业开始面对存量竞争。红利期过去了,只剩内部争夺。 即便如此,测试行业仍有许…...
【王道数据结构】第六章(下) | 图的应用
目录 一、最小生成树 二、最短路径 三、有向⽆环图描述表达式 四、拓扑排序 五、关键路径 一、最小生成树 1、最小生成树的概念 对于一个带权连通无向图G (V,E),生成树不,每棵树的权(即树中所有边上的权值之和)也可能不同。设R为G的所…...
Leetcode:518. 零钱兑换 II(C++)
目录 518. 零钱兑换 II 问题描述: 实现代码与解析: 动态规划(完全背包): 原理思路: 377. 组合总和 Ⅳ 问题描述: 实现代码与解析: 动态规划(完全背包࿰…...
Java中类是什么
类(class)是构造对象的模板或蓝图。 我们可以将类想象成制作小甜饼的模具,将对象想象为小甜饼。由类构造(construct)对象的过程称为创建类的实例(instance)。 正如前面所看到的,用Java 编写的所有代码都位于某个类里面。 标准 Java 库提供了几千个类&a…...
C进阶:预处理
🤖本篇文章主要讲解预处理的知识,即使你是小白也可以看的懂,若你对预处理有所不解,确定不来看看吗?😿 目录 一.代码运行是的两种环境 二.翻译环境 三.预定义符号 四.#define 1.define 定义宏 2.带有…...
侯捷C++系统工程师
前言我相信对于每一个学习C的同学和从业者来说,台湾著名学者侯捷老师的C系列都是不可错过的好视频。侯捷老师在网上已有五门课,分别是:C面向对象开发、STL标准库与泛型编程、C新标准C1&14、C内存管理机制以及C Startup揭秘讲师介绍侯捷老…...
ReentrantReadWriteLock、StampedLock
ReentrantLock、ReentrantReadWriteLock、StampedLock 读写锁 一个资源可以被多个读线程访问,或者被一个写线程访问,但是不能同时存在读写线程。 小口诀:读写互斥,读读共享 锁的演变 无锁-----> 独占锁----->读写锁---…...
Mysql中的事务、锁、日志详解
一、事务 1.事务特性及保证事务特性的原理 原子性:当前事务的操作要么全部成功,要么全部失败。原子性由undo log实现,undo log记录了每次操作之前的数据版本,如果某一操作失败,可以根据undo log回滚到最初状态。一致…...
k8s笔记24--安装metrics-server及错误处理
k8s笔记24--安装metrics-server及错误处理1 介绍2 安装3 常见错误第一次错误 持续 Failed probe第二次错误 bad status code "403 Forbidden"4 说明1 介绍 最近一个同事在老版本的 k8s 上安装metrics-server,pod一直处于running 非就绪状态,经…...
【电商】订单系统--售后的简易流程与系统关系
用户进行了订单签收并不意味着终结,这只是一个新的开始,因为商品送达后可能会由于运输过程包装或商品有破损,商品本质量并非商品详情中所描述的那样等各种原因使用户进行退货或换货;还有一种场景是用户签收后发现有的商品漏发、少…...
低代码开发平台|生产管理-成本核算搭建指南
1、简介1.1、案例简介本文将介绍,如何搭建生产管理-成本核算。1.2、应用场景计算主生产及子生产计划的工序成本、领料成本,统计出总的生产成本金额。2、设置方法2.1、表单搭建1)新建表单【商品信息】,字段设置如下;名称…...
Xshell 安装及使用方法
公网地址:47.XXX.XXX.229 私网地址:172.XXX.128.XXX 用户:root 密码:1234561,百度xshell,下载,安装Xshell 2,填写配置及使用方式 主机:47.XXX.XXX.229 用户:root 密码&a…...
【Axure教程】转盘抽奖原型模板
转盘抽奖是营销活动中很常用的一种方式,在线上我们也可以经常看到转盘抽奖的活动,所以今天作者就教大家在Axure中怎么制作一个转盘抽奖的原型模板。一、效果展示1、可以随机转动轮盘,轮盘停止时,指针对着的奖品高亮显示2、可以重复…...
量子比特大突破!原子薄材料成为“救世主”
(图片来源:网络)量子计算是一项极其复杂的技术,现阶段的一些挑战正严重阻碍着它的发展,尤其是量子比特的小型化和质量问题。IBM计划在2023年实现具有1121个超导量子比特的处理器。以目前的技术手段,要达到这…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...
Qt的学习(二)
1. 创建Hello Word 两种方式,实现helloworld: 1.通过图形化的方式,在界面上创建出一个控件,显示helloworld 2.通过纯代码的方式,通过编写代码,在界面上创建控件, 显示hello world; …...
