[類別] 公有、私有成員

private關鍵字以及public關鍵字
描述類別成員的存取控制
public關鍵字:
任何使用特定物件的程式都可以直接存取,而且程式只能利用public成員函數存取private成員,可以用來建立使用者介面
 
private關鍵字:
只能用成員函數或友誼函數存取該內容

存取控制
使用者利用介面與程式溝通
取得或者是輸入需要的資料
將資料隔絕
避免使用者直接存取的方式稱為「資料隱藏」
也可以稱為「封裝」
利用成員函數的控制
確保資料的完整性
publicprivate ?
不論資料成員或者是成員函數
都可以放在類別的public區或private
由於OOP主要的特性是隱藏資料
所以資料成員通常放在private
構成介面的成員函數需放在public
否則程式無法呼叫這些函數
在類別宣告中
不一定要用關鍵字private
因為這是類別的預設存取控制
不過
我們仍會特別寫出private

強調資料的隱藏性

Ex:

#include <iostream>
using namespace std;

class time     //類別宣告 
{
 public:                           //公<span style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" data-mce-type="bookmark" class="mce_SELRES_start"></span>有函數宣告,可供程式呼叫 
  void input_hour(int);
  void input_minute(int);
  void input_second(double);
  void show();
  
 private:                         //私有成員宣告             
  int hour;                    //程式只能由公有函數或友誼函數存取 
  int minute;
  double second;

};

//成員函數定義 
void time::input_hour(int n){
 hour=n;
}

void time::input_minute(int n){
 minute=n;
}
void time::input_second(double n){
 second=n;
}
void time::show(){
 
 cout << hour << " : " << minute << " : " << second << endl; 
 
}

int main(){
 
 time t1;     //建立物件
 
 //呼叫成員函數,為時間設值 
 t1.input_hour(12);  
 t1.input_minute(12);
 t1.input_second(12.121212);
 
 //呼叫成員函數,印出時間 
 t1.show();
 
}

 

 

有疑問? 留個言吧!

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料