学习笔记,仅供参考


文章目录

  • 面向对象
    • 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相关推荐

  1. 第三次学JAVA再学不好就吃翔(part107)--字符流的拷贝

    学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流的拷贝 拷贝纯文本文件 注意事项 自定义字符数组的拷贝 IO流 字符流的拷贝 拷贝纯文本文件 zzz.txt: 安徽财经大学 JAVA代码: pa ...

  2. 第三次学JAVA再学不好就吃翔(part39)--package关键字

    学习笔记,仅供参考 文章目录 面向对象 package关键字 不同包之间的访问 面向对象 package关键字 为什么要有包 将字节码(.class)进行分类存放 包其实就是文件夹 包的格式 pack ...

  3. 第三次学JAVA再学不好就吃翔(part106)--字符流

    学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流输入流FileReader 字符流是什么 FileReader类构造方法 举个例子 字符流输出流FileWriter FileWriter构造方法 ...

  4. 第三次学JAVA再学不好就吃翔(part46)--Scanner类

    学习笔记,仅供参考 文章目录 Scanner类 Scanner获取数据出现的问题 Scanner类 概述 Scanner是在java.util包下的一个类,使用该类时我们需要导包.这个类被final修 ...

  5. 第三次学JAVA再学不好就吃翔(part117)--单例设计模式

    学习笔记,仅供参考,有错必纠 文章目录 多线程 单例设计模式 饿汉式 懒汉式 第三种格式 Timer类 线程的五种状态 多线程 单例设计模式 单例设计模式,即保证类在内存中只有一个对象,如何保证类在内 ...

  6. 第三次学JAVA再学不好就吃翔(part109)--LineNumberReader类

    学习笔记,仅供参考,有错必纠 IO流 LineNumberReader类 该类继承自java.io.BufferedReader,该类可以跟踪行号的缓冲字符输入流.此类定义了方法 setLineNum ...

  7. 第三次学JAVA再学不好就吃翔(part108)--带缓冲的字符流

    学习笔记,仅供参考,有错必纠 文章目录 IO流 带缓冲的字符流 BufferedReader和BufferedWriter readLine和newLine方法 IO流 带缓冲的字符流 Buffere ...

  8. 第三次学JAVA再学不好就吃翔(part7)--基础语法之运算符

    学习笔记,仅供参考 文章目录 JAVA基础语法 运算符 算数运算符 算术运算符 ++和-- 赋值运算符 关系运算符 JAVA基础语法 运算符 什么是运算符 就是对常量和变量进行操作的符号. 运算符的分 ...

  9. 第三次学JAVA再学不好就吃翔(part115)--多线程

    学习笔记,仅供参考,有错必纠 文章目录 多线程 多线程引入 什么是线程 多线程并行和并发的区别 Java程序运行原理 多线程的实现方式 多线程实现的方式1 多线程程序实现的方式2 以上两种实现方式的区 ...

  10. 第三次学JAVA再学不好就吃翔(part113)--对象操作流

    学习笔记,仅供参考,有错必纠 对象操作流 对象操作流可以将一个对象写出, 或者读取一个对象到程序中,也就是执行了序列化和反序列化的操作. 举个例子 先构造一个Role类: package com.gu ...

最新文章

  1. 转:在 .NET 中实现异步回调访问数据库
  2. Boostrap的按钮下拉菜单
  3. hihocoder 1107 : Shortest Proper Prefix
  4. 2018/7/18-纪中某C组题【jzoj3508,jzoj3509,jzoj3510,jzoj3512】
  5. Redis高频面试笔记:java版本号比较算法
  6. 确定了C/C++的学习路线之后,便只能是一条路走到黑了
  7. shell截取字符串的8种方法
  8. CentOS设置工作区个数
  9. HDU5688 Problem D【字符串排序+MAP】
  10. HTML5网页语音识别功能演示
  11. Docker 安装教程
  12. qt 设计师界面 图片_如果没有设计界面,设计师会发生什么?
  13. 怎么增加LINUX虚拟机的运行内存,Mac虚拟机内存怎么分配?虚拟机内存不足解决办法...
  14. 30KP30A高功率瞬态二极管参数
  15. 用计算机弹国王与乞丐,国王与乞丐 MIDI File Download :: MidiShow
  16. 腾讯云主机部署hexo博客
  17. 十大编程语言黑客向,学会一个不怕没工作,全部学会随便秀操作
  18. 08. 路由器的基本配置和Talent配置
  19. WindowsMedia/FormWMP.cs
  20. 重温乔布斯在斯坦福大学的经典演讲------Stay Hungry, Stay Foolish

热门文章

  1. 【机器学习】集成学习知识点总结二
  2. Oracle中创建、修改、删除序列
  3. 设置eclipse中的编辑区的背景颜色、注释文字的颜色、修改注释内作者名和时间
  4. shell脚本编程规范与变量
  5. C++_异常6-其他异常特性
  6. 生成唯一id号解决方法
  7. 用Helper对类的行为进行修饰以便复用(附:外三篇)
  8. SpringMVC札集(05)——SpringMVC参数回显
  9. 多晶硅价格已处于阶段性高点
  10. 百度地图API的第一次接触——标注和信息窗的使用