第三次学JAVA再学不好就吃翔(part23)--private和this
学习笔记,仅供参考
文章目录
- 面向对象
- private关键字和封装
- this关键字的概述和特点
面向对象
private关键字和封装
- private关键字特点
- 是一个权限修饰符
- 可以修饰成员变量和成员方法
- 被其修饰的成员只能在本类中被访问
- 封装概述
- 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
- 封装原则
- 将不需要对外提供的内容都隐藏起来。
- 把属性隐藏,提供公共方法对其访问。
- 封装和private的应用:
- 把成员变量用private修饰
- 提供对应的getXxx()和setXxx()方法
- private仅仅是封装的一种体现形式,不能说封装就是私有
- 举个例子
class PrivateTest {public static void main(String[] args) {Bunny b1 = new Bunny();Bunny b2 = new Bunny();b1.setAge(9);System.out.println(b1.getAge());b2.setAge(-1);System.out.println(b2.getAge());}
}
class Bunny {String name;private int age;public void setAge(int a) {if (a > 0 && a < 120) { //利用判断语句,保证数据的安全age = a;} else {System.out.println("录入错误");}}public int getAge() {return age;}}
输出:
9
录入错误
0
this关键字的概述和特点
- 先来个例子
class PrivateTest {public static void main(String[] args) {Bunny b1 = new Bunny();b1.setAge(9);System.out.println(b1.getAge());}
}
class Bunny {String name;private int age;public void setAge(int age) {if (age > 0 && age < 120) { //利用判断语句,保证数据的安全age = age;} else {System.out.println("录入错误");}}public int getAge() {return age;}}
输出:
0
我们看到输出结果的age为0,那说明,我们没有赋值成功。这是为啥呢? 这是就近原则导致的,我们的age = age
语句表示的是局部变量age给自身赋值,而不是给成员变量age赋值,所以在我们调用成员变量age时,得到的依然是它的系统默认值0.
那么我们怎样给成员变量age赋值呢?
在变量age前加上this.
就可以了,this.age
就代表的是成员变量age:
class PrivateTest {public static void main(String[] args) {Bunny b1 = new Bunny();b1.setAge(9);System.out.println(b1.getAge());}
}
class Bunny {String name;private int age;public void setAge(int age) {if (age > 0 && age < 120) { //利用判断语句,保证数据的安全this.age = age;} else {System.out.println("录入错误");}}public int getAge() {return age;}}
输出:
9
我们的成员变量必须由对象来调用,而this中记录的就是对象b1中记录的地址值,所以我们用this.age
可以访问成员变量age,this.age
就相当于b1.age
第三次学JAVA再学不好就吃翔(part23)--private和this相关推荐
- 第三次学JAVA再学不好就吃翔(part107)--字符流的拷贝
学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流的拷贝 拷贝纯文本文件 注意事项 自定义字符数组的拷贝 IO流 字符流的拷贝 拷贝纯文本文件 zzz.txt: 安徽财经大学 JAVA代码: pa ...
- 第三次学JAVA再学不好就吃翔(part39)--package关键字
学习笔记,仅供参考 文章目录 面向对象 package关键字 不同包之间的访问 面向对象 package关键字 为什么要有包 将字节码(.class)进行分类存放 包其实就是文件夹 包的格式 pack ...
- 第三次学JAVA再学不好就吃翔(part106)--字符流
学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流输入流FileReader 字符流是什么 FileReader类构造方法 举个例子 字符流输出流FileWriter FileWriter构造方法 ...
- 第三次学JAVA再学不好就吃翔(part46)--Scanner类
学习笔记,仅供参考 文章目录 Scanner类 Scanner获取数据出现的问题 Scanner类 概述 Scanner是在java.util包下的一个类,使用该类时我们需要导包.这个类被final修 ...
- 第三次学JAVA再学不好就吃翔(part117)--单例设计模式
学习笔记,仅供参考,有错必纠 文章目录 多线程 单例设计模式 饿汉式 懒汉式 第三种格式 Timer类 线程的五种状态 多线程 单例设计模式 单例设计模式,即保证类在内存中只有一个对象,如何保证类在内 ...
- 第三次学JAVA再学不好就吃翔(part109)--LineNumberReader类
学习笔记,仅供参考,有错必纠 IO流 LineNumberReader类 该类继承自java.io.BufferedReader,该类可以跟踪行号的缓冲字符输入流.此类定义了方法 setLineNum ...
- 第三次学JAVA再学不好就吃翔(part108)--带缓冲的字符流
学习笔记,仅供参考,有错必纠 文章目录 IO流 带缓冲的字符流 BufferedReader和BufferedWriter readLine和newLine方法 IO流 带缓冲的字符流 Buffere ...
- 第三次学JAVA再学不好就吃翔(part7)--基础语法之运算符
学习笔记,仅供参考 文章目录 JAVA基础语法 运算符 算数运算符 算术运算符 ++和-- 赋值运算符 关系运算符 JAVA基础语法 运算符 什么是运算符 就是对常量和变量进行操作的符号. 运算符的分 ...
- 第三次学JAVA再学不好就吃翔(part115)--多线程
学习笔记,仅供参考,有错必纠 文章目录 多线程 多线程引入 什么是线程 多线程并行和并发的区别 Java程序运行原理 多线程的实现方式 多线程实现的方式1 多线程程序实现的方式2 以上两种实现方式的区 ...
- 第三次学JAVA再学不好就吃翔(part113)--对象操作流
学习笔记,仅供参考,有错必纠 对象操作流 对象操作流可以将一个对象写出, 或者读取一个对象到程序中,也就是执行了序列化和反序列化的操作. 举个例子 先构造一个Role类: package com.gu ...
最新文章
- 转:在 .NET 中实现异步回调访问数据库
- Boostrap的按钮下拉菜单
- hihocoder 1107 : Shortest Proper Prefix
- 2018/7/18-纪中某C组题【jzoj3508,jzoj3509,jzoj3510,jzoj3512】
- Redis高频面试笔记:java版本号比较算法
- 确定了C/C++的学习路线之后,便只能是一条路走到黑了
- shell截取字符串的8种方法
- CentOS设置工作区个数
- HDU5688 Problem D【字符串排序+MAP】
- HTML5网页语音识别功能演示
- Docker 安装教程
- qt 设计师界面 图片_如果没有设计界面,设计师会发生什么?
- 怎么增加LINUX虚拟机的运行内存,Mac虚拟机内存怎么分配?虚拟机内存不足解决办法...
- 30KP30A高功率瞬态二极管参数
- 用计算机弹国王与乞丐,国王与乞丐 MIDI File Download :: MidiShow
- 腾讯云主机部署hexo博客
- 十大编程语言黑客向,学会一个不怕没工作,全部学会随便秀操作
- 08. 路由器的基本配置和Talent配置
- WindowsMedia/FormWMP.cs
- 重温乔布斯在斯坦福大学的经典演讲------Stay Hungry, Stay Foolish