第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

都說private等,除了public外是安全的聲明,請問怎么安全了

都說private等,除了public外是安全的聲明,請問怎么安全了

蕪湖不蕪 2018-07-14 12:13:15
都說private是等非public是安全的聲明,因為外部訪問不到,但是請問怎么安全了?如 private  外部是無法 訪問到 private 聲明的 變量的。但是 外部如果需要使用到  就 需要 寫 set  get方法 寫了  set  get 外部還是可以訪問到的 ,那么請問  此時 這種情景 還是安全的嗎再問一個 小問題    如何 制造一些 不安全的場景   來證明  public 會帶來 哪些危險
查看完整描述

5 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

比如游戲里面一個人的血量,血量最大值1000,最小是0.

假如我們在外界隨意訪問它,修改它,會造成很多的邏輯錯誤。

classs one

private static int blood

public set blood {

 if (blood> 1000)
      {
          blood= 1000;
      }
 if (blood<0)

   {

    blood= 0;

   }  
}

public get blood() {return blood}

主要是把邏輯錯誤處理掉了,這樣的話,外界無法訪問里面的blood變量,只能通過這些set get方法來調用增加血量,減少錯誤,否則外界類直接 blood=blood+10000  blood=blood-150000,這樣造成很多邏輯問題, 這也是封裝的一種方法,大大減少外界邏輯代碼量的判斷,否則你得每次判斷是否大于1000,是否小于0,這樣便于構架設計。

在很多人設計的時候,這種方式就有用處了,一個是防范別人隨意修改引起各種邏輯錯誤,一個減少代碼量。

比如下面的一個類:

class one {

private static int blood

}

 

import one

class Action {

public setEatPig(){

one.blood=one.blood+100 //這里需要判斷是否大于1000 

if (>1000){}

 }

public setEatBread(){

one.blood=one.blood+30 //這里需要判斷是否大于1000 

if (>1000){}

 }

public setHurt(){

one.blood=one.blood-15// 受到傷害,判斷時候小于0

if (<0){}

 } 

}

進行這些動作

你是不是每步得判斷是否大于1000,小于0? 但是setblood已經限制了這一步


查看完整回答
反對 回復 2018-07-14
?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

set  get 中可以設置約束條件, 直接訪問變量不安全.

查看完整回答
反對 回復 2018-07-14
?
UYOU

TA貢獻1878條經驗 獲得超4個贊

set/get是獲取設置的當前實例。

如果是static類型當我沒說


查看完整回答
反對 回復 2018-07-14
?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

這完全和“安全”八竿子打不著

public/private是用于控制內部變量的可見性,目的是限制對這個類的使用方式,避免產生錯誤的邏輯。


查看完整回答
反對 回復 2018-07-14
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

變量設置private,通過get set方法提供可以讓變量可控,假如有個年齡的變量,直接public的話,別人就有可能把它寫成負值,但如果是提供一個方法,你可以在方法中增加判斷條件,不滿足條件的都不讓修改,程序也就更可控了,尤其是多人協(xié)作的時候,別人不一定知道你的參數(shù)有沒有約束,所以什么情況都有可能發(fā)生

查看完整回答
反對 回復 2018-07-14
  • 5 回答
  • 0 關注
  • 1071 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號