复习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个超导量子比特的处理器。以目前的技术手段,要达到这…...
Swagger3 API接口文档规范课程(内含教学视频+源代码)
Swagger3 API接口文档规范课程(内含教学视频源代码) 教学视频源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87431932 目录Swagger3 API接口文档规范课程(内含教学视频源代码)教学视频源代…...
数据库的基本操作
查看数据库语法格式:SHOW {DATABASES | SCHEMAS}[LIKE pattern | WHERE expr]#查看全部数据库mysql> show databases; -------------------- | Database | -------------------- | information_schema | | mysql | | performance_schema …...
分享5个超好用的Vue.js库
开发人员最好的朋友和救星就是这些第三方库,无论是开发新手还是经验丰富的老手,我们都喜欢开源软件包。借助开源库加速Vue项目的开发进度是现代前端开发比较常见的方式,这几个 Vue.js库,建议尽早用上,加速你的项目开发…...
第四章.误差反向传播法—ReLU/Sigmoid/Affine/Softmax-with-Loss层的实现
第四章.误差反向传播法 4.2 ReLU/Sigmoid/Affine/Softmax-with-Loss层的实现 1.ReLU层 1).公式 2).导数: 3).计算图: 4).实现: class ReLU:def __init__(self):self.mask None# 正向传播def forward(self, x):self.mask (x < 0) # 输入…...
Python-第二天 Python基础语法
Python-第二天 Python基础语法一、 字面量1.1 常用的值类型1.1.1 字符串(string)二、注释2.1 注释的作用2.2 注释的分类三、变量3.1 什么是变量3.2 变量的特征四、数据类型4.1 数据类型4.2 type()语句4.3 type()语句的使用方式4.4 变量有类型吗ÿ…...
命令模式包含哪些主要角色?怎样实现命令?
命令模式包含以下主要角色:抽象命令类(Command)角色: 定义命令的接口,声明执行的方法。具体命令(Concrete Command)角色:具体的命令,实现命令接口;通常会持有…...
SpringCloud-Feign
Spring Cloud中集成Feign (只是笔记而已 其中有点命名啥的不对应,搜到了就划走吧) Feign--[feɪn]:Web 服务客户端,能够简化 HTTP 接口的调用。 没有Feign的之前服务提供者 package com.springcloudprovide.controller;import com.springclo…...
XCP实战系列介绍08-基于Vehicle Spy进行XCP测量的工程配置详解
本文框架 1.概述2. 工程配置步骤2.1 创建MEP工程2.1.1 添加A2L文件2.1.2 CAN收发ID配置2.2 MEP属性设置2.2.1 ECU属性设置2.2.2 MEP的Security设置2.3 DAQ设置2.3.1创建DAQ2.3.2 list中测量及标定量的添加和设置2.3.3 设置DAQ list中变量的event1.概述 在前面一篇文章《看了就…...
JVM调优几款好用的内存分析工具
对于高并发访问量的电商、物联网、金融、社交等系统来说,JVM内存优化是非常有必要的,可以提高系统的吞吐量和性能。通常调优的首选方式是减少FGC次数或者FGC时间,以避免系统过多地暂停。FGC达到理想值后,比如一天或者两天触发一次…...
Vue中路由缓存及activated与deactivated的详解
目录前言一,路由缓存1.1 引子1.2 路由缓存的方法1.2.1 keep-alive1.2.2 keep-alive标签中的include属性1.2.3 include中多组件的配置二,activated与deactivated2.1 引子2.2 介绍activated与deactivated2.3 解决需求三,整体代码总结前言 在Vu…...
建设工程中标查询网站/京津冀协同发展
只是公益,希望能帮助所有参加考试和热爱数学的孩子们!题目搜自网络,可能有误,题型思路更重要,谁有真题可以发给我,大家一起研究。答案解析只是一家之言,方法和打字可能有错误之处,一…...
建设银行扬中网站/上海网站建设哪家好
String是Java.lang包下的final类,其值是不可以改变的。String类实现了java.io.Serializable,Comparable<String>,CharSequence 这三个接口。 java.io.Serializable 接口是 序列化接口,实现此接口的类,可以序列化和反序列化此类对象。 C…...
网站开发寻找潜在客户的途径/seo营销技巧培训班
转载于:https://www.cnblogs.com/xutopia/p/10839723.html...
毕业设计做网站起个名字/公司网站注册流程和费用
字段不超过8000的话可以这样: update 表名 set 字段名replace(convert(varchar(8000),字段名),要替换的,替换为的) 转载于:https://www.cnblogs.com/alon/archive/2009/10/13/1582308.html...
佛山做网站建设公司/职业技能培训学校
昨晚与闺中密友聚餐,话题自然少不了女人世界的种种。不知怎么,话题就扯到了女人的头发上。从头发谈到染发又谈到染发剂,又从染发剂谈到经常染发有致癌的可能。一位朋友刚换了一种染发剂的颜色,浅棕色里掺杂着丝丝灰白,…...
宁波网站设计推荐荣盛网络/seo属于什么
传送门 这题是多重背包的二进制分解01背包处理。 给个图: 我就不多说了,自己看吧。 代码: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #include<c…...