1、  private:

是一个权限修饰符

可以修饰成员变量和成员方法

被其修饰的成员只能在本类中被访问

定义一个学生类:

成员变量:name,age

成员方法:show()方法

2、我们在使用这个案例的过程中,发现了一个问题:

通过对象去给成员变量赋值,可以赋值一些非法的数据。(年龄可以赋予负数)

这是不合理的。

应该是这个样子的:在赋值之前,先对数据进行判断。

判断到底在哪里做比较合适呢?

StudentDemo类是一个测试类,测试类一般只创建对象,调用方法。

所以,这个判断应该定义在Student类中。

而我们在成员变量的位置可不可以进行数据判断呢?

是不可以的,因为做数据校验,必须要依靠一些逻辑语句。

逻辑语句是应该定义在方法中的,所以,我们最终决定在Student类中提供一个方法

来对数据进行校验。

按照我们前面的分析,我们给出了一个方法进行校验。

但是呢,它偏偏不调用方法来赋值,还是直接赋值了,

这样我们的方法就没有起到作用。

我就应该要求你必须使用我的方法,而不能直接调用成员变量赋值。

怎么去强制要求不能直接使用成员变量呢?

针对这种情况,Java就提供了一个关键字 private

private:私有的。可以修饰成员变量和成员方法。

注意:被private修饰的成员只能在本类中访问。

其实我讲到现在讲解的是一个封装的思想。

封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

3、封装和private的应用:

A:把成员变量用private修饰

B:提高对应的getXxx()和setXxx()方法

[代码]java代码:01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47class Student {

//姓名

private String name;

//年龄

private int age;

//姓名获取值

public String getName() {

return name;

}

//姓名设置值

public void setName(String n) {

name   = n;

}

//年龄获取值

public int getAge() {

return age;

}

//年龄赋值

public void setAge(int a) {

age   = a;

}

}

//测试类

class StudentTest {

public static void main(String[]   args) {

//创建学生对象

Student   s = new Student();

//使用成员变量

//错误:被私有修饰了,外界不能直接访问了

//System.out.println(s.name+"---"+s.age);

System.out.println(s.getName()+"---"+s.getAge());

//给成员变量赋值

//s.name   = "林青霞";

//s.age   = 27;

//通过方法给赋值

s.setName("林青霞");

s.setAge(27);

System.out.println(s.getName()+"---"+s.getAge());

}

}

4、this:是当前类的对象引用。简单的记,它就代表当前类的一个对象。

注意:谁调用这个方法,在该方法内部的this就代表谁。

this的场景:

解决局部变量隐藏成员变量

[代码]java代码:01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46class Student {

//姓名

private String name;

//年龄

private int age;

//姓名获取值

public String getName() {

return name;  //这里其实是隐含了this

}

//姓名设置值

public void setName(String name) { //name = "林青霞";

//name   = name; //变量的使用规则:就近原则

//这里是类名,目前还没有说过类似的用法,所以这个是有问题的

//这里的调用只能通过对象名

//这个对象如果存在,它应该代表的是Student的一个对象。

//那么,谁能够代表当前类的对象呢? java就提供了一个关键字 this

//Student.name   = name;

this.name   = name;

}

//年龄获取值

public int getAge() {

return age;

}

//年龄赋值

public void setAge(int age) {

this.age   = age;

}

}

//测试类

class StudentTest {

public static void main(String[]   args) {

//创建学生对象

Student   s = new Student();

//给成员变量赋值

s.setName("林青霞");

s.setAge(27);

//获取数据

System.out.println(s.getName()+"---"+s.getAge());

}

}

Java私有方法运用场景_java6-3 封装和private关键字相关推荐

  1. python私有方法应用场景_Python 私有属性和私有方法应用场景分析

    类的私有属性和方法 Python是个开放的语言,默认情况下所有的属性和方法都是公开的 或者叫公有方法,不像C++和 Java中有明确的public,private 关键字来区分私有公有. Python ...

  2. 面向对象、封装、private关键字、set和get方法、this关键字、构造方法、API

    文章目录 1. 类和对象 1.1 面向对象和面向过程编程思想 面向过程编程思想 面向对象编程思想 举例对比2种编程思想 1.2 类的概述 类的概述 类的组成 举例 小结 1.3 对象的概述 对象的概念 ...

  3. 面向对象(封装对象private关键字)

    1.面向对象(封装的概述) A:封装概述 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. B:封装好处 隐藏实现细节,提供公共的访问方式 提高了代码的复用性 提高安全性. C:封装原则 将不需 ...

  4. python私有方法应用场景_Python私有属性私有方法应用实例解析

    01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私有方法 就是 对象 ...

  5. Java私有方法解释_java接口中 定义 private 私有方法

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  6. java私有方法单元测试_如何通过java反射的方式对java私有方法进行单元测试

    待测试的私有方法: import org.testng.Assert; import org.testng.annotations.BeforeClass; import org.testng.ann ...

  7. java私有方法_如何调用私有方法

    当不涉及到用户隐私的时候,我们调用私有方法一般都没有什么问题. 在我们调用私有方法之前,我们必须要先知道你想调用的对象有哪些私有方法,和需要参数的那些方法的参数类型,和返回值的类型是多少. 查看私有方 ...

  8. Java面向对象思想、类的定义、对象的使用、对象内存图、成员变量和局部变量的区别、封装、private关键字、this关键字、构造方法、JavaBean-day06

    目录 第1节 面向对象思想 1.1 面向对象思想概述 概述 举例 特点 1.2 类和对象 什么是对象 类与对象的关系 1.3 类的定义 事物与类的对比 类的定义格式 1.4 对象的使用 对象的使用格式 ...

  9. java中接口私有反方_接口中的Java 9私有方法

    java中接口私有反方 Java 9 has been released and there has been a lot of changes. Today we will look into Ja ...

最新文章

  1. [转]在C#中使用API回调函数的方法
  2. HTML 杨辉三角,杨辉三角 - 哼哼哈嘿 - OSCHINA - 中文开源技术交流社区
  3. YoloV5 最强剪枝技术 模型压缩,3ms推理的YoloV5mAP60
  4. FoveaBox 超越anchor based检测框架
  5. 深入单例模式 java,深入单例模式四
  6. Linux 内核打印级别
  7. yolo极大抑制_pytorch实现yolov3(4) 非极大值抑制nms
  8. 视频质量检测中的TP、FP、Reacll、Precision
  9. 今天maven install时碰到的两个问题(堆溢出和编译错误)
  10. ubuntu18.04多版本opencv
  11. 吴恩达新公司曝光:签下富士康,要用AI变革制造业
  12. ios系统框架一: Core Animation
  13. 【数据蒋堂】报表应用的三层结构
  14. Laravel 项目使用 Carbon 人性化显示文章发表时间
  15. 腾讯云轻量应用服务器(免费内测)开箱测评
  16. 利用谷歌安全令牌(google authenticator)为服务器ssh添加二次验证功能
  17. 在Mac的“邮件”中创建和使用电子邮件签名使用教程
  18. 女神找我帮忙--图片转成手绘,该不该答应?
  19. VUE + CSS画三角形
  20. QNX系统终端中同一个进程号显示多次

热门文章

  1. JavaScript | 数组的常用属性和方法
  2. celery的中文_celery异步任务框架
  3. wpf中groupbox有什么用_展示设计中的标摊是什么 用的什么材料
  4. python定义了函数却显示未定义_python
  5. OkHttp透明压缩,收获性能10倍,外加故障一枚
  6. 图解面试题:找出数组中重复的数字?
  7. 50种Java编程技巧,越早知道越好!(建议收藏)
  8. C# Winform 窗体美化(一、IrisSkin 换肤库)
  9. mysql有没有实现高可用_MySQL高可用架构:mysql+keepalived实现
  10. C#利用反射将Datatable转化为指定实体类ListT