栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA——private+get/set方法与public的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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;//修改成功
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/355842.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号