iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0

資訊隱藏(Information Hiding)
不能看到、接觸到物件內部不想公開的資訊存取控制字符(Access Modifier)來限制外部對類別成員變數或方法的存取。

可以使用的存取控制字符:

  • Private:只有在成員所屬的類別之中才能存取此成員。
  • Protected:除了類別本身,在子類別或同一套件中的類別,也能存取此成員。
  • Public:任何類別都可以存取此成員
  • 沒使用字符:只有類別本身及同一套件中的類別才能存取此成員。

Private存取控制字符是指該成員變數是類別私有的,只有類別中的方法看得到,其他類別無法看到這個成員,也無法使用。
https://ithelp.ithome.com.tw/upload/images/20221007/20152201ymU24wN0J0.png

因為private int tire; 為私有的,所以主程式那邊無法使用。

https://ithelp.ithome.com.tw/upload/images/20221007/20152201cktV8rmVhZ.png

如果要修改或取得那個private成員的值,要使用專門的方法:
get變數名稱 取得成員值的方法。
set變數名稱 設定成員值的方法。

package com.mycompany.testthree;

class Car{
   private int tire;
   private int seat;
    
    void run(int tire,int seat){
        this.tire=tire;
        this.seat=seat;
    }
     public int getTire(){return tire;}  
     public void setTire(int tire){this.tire=tire;}
      public int getSeat(){return seat;}  
     public void setSeat(int seat){this.seat=seat;}
}
public class testThree {
    public static void main(String[] args) {
        Car bus = new Car();
        Car auto = new Car();       
                
        bus.setTire(6);
        bus.setSeat(20);
        auto.setTire(4);
        auto.setSeat(4);
       
        System.out.println("公車有"+bus.getTire()+"個輪胎、"+bus.getSeat()+"座位,");
        System.out.print("汽車有"+auto.getTire()+"個輪胎、"+auto.getSeat()+"座位,");
    }
}

This為保留字,當參數的名稱和成員變數相同,參數名稱會遮蔽掉成員變數,所以這時候使用this保留字,代表現在執行方法的物件。

https://ithelp.ithome.com.tw/upload/images/20221007/20152201GKoXuwuNDI.png

設定完成後,就能從主程式呼叫get方法,印出private成員的值。

參考資料:
最新java程式語言第六版


上一篇
類別中的方法
下一篇
String類別的方法
系列文
大學每日任務:攝取新知識及學習紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言