IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JAVA——private+get/set方法与public的区别 -> 正文阅读

[Java知识库]JAVA——private+get/set方法与public的区别

//设置public
public int num1;

//设置private并提供set/get方法
private int num2;

public void setNum2(int num2){
    this.num2=num2;
}

public int getNum2(){
    return num2;
}
    

如果仅仅是上面的例子,那么这两种方式是没什么区别的。外部调用的结果都可以对属性进行读取与修改。

这个例子只是展示了一个常规的私有属性与 get/set 方法的使用模式,仅仅从这个例子中看不出来这个模式有什么好处。实际上,公共属性与私有属性的使用,还是有很大区别的:

  • 如果一个属性是 public,那么外部可以直接对这个属性进行读取与修改;
  • 如果一个属性是 private,那么外部不可以直接对这个属性进行读取与修改,而是通过这个类提供的 get、set 方法去访问。

也就是说,前者把控制权交给别人,而后者的控制权还在自己手中。我举几个简单的例子:

  • 比如说一个只读属性,可以提供 get 方法给外界调用读取,但是不允许修改,那么这时候可以不提供 set 方法,或者在 set 方法中抛出异常;
  • 比如我的数据格式与别人使用的格式不同,那么我可以在 get 与 set 方法中,加上进行格式转换的代码;
  • 比如我的数据可以被读取与修改,但是修改时候必须经过我的验证,那么我的 set 方法中会添加数据验证的代码。

private 目的是私有, 是不让别人用, get/set方法目的是让别人用. 这岂不矛盾了??

是这样的.private 是不让别人用, public 是让别人用, 但是有一种需求是让有的人用而让另外一些人不能用. 这时private/public的功能就出现短板了. 这时就有了set/get方法的用武之地了. 我们可以在set/get方法是设置, 如下:?
public set(XXX){?
???????? if(你是A){?
???????????? 你可以设置.
???????? }

???????? else{?
???????????? 对不起, 你没有设置的权限.?
???????? }?
}?

例如:一个变量名称为num,我们希望所有对象的num都不是"123",这样我们就可以在setNum()方法中添加限制条件。

private int num;
 
public void setNum(int x){
    //设置限制条件
    if(x==123)
        System.out.println("num不可取123!")//报错,num属性修改失败
    else
        this.name=x;//修改成功
}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-01 11:32:51  更:2021-11-01 11:33:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:31:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码