所謂的public與private 是為了控制類別外部的存取權而設定的東西,就把它想像成權限吧,當設成private時外部的類別就無法存取,設成public外部的任何類別都可以存取,其實還有一個叫做protected的,他是保護的意思,只有在同一個package或繼承該類別後才能夠存取,好了 抽象的說明到此為止,下面用例子來實做看看

 

//public實例
class Main {

    public static void main(String[] args) {

    	Class1 c = new Class1();
    	System.out.println(c.str);
    }
}
class Class1
{
	public String str = "Hello";

}

會發現 他能正常的印出"hello",但如果說把str的權限改成private,你會發現他會跳出error,會變得無法用c.str存取,如果說為了保護屬性不想讓他能由外部隨意存取,必須由內部控制,假設今天我們有一台車,可是這台車如果跑超過5km/h就會解體我們必須保護這台車的無論油門怎樣踩時速都不會超過5km/h,可以寫一個公用的(public)方法去操作

import java.util.Scanner;
class Main {

    public static void main(String[] args) {
	Scanner input = new Scanner(System.in);
    	Car BMW = new Car();
    	System.out.println("如要加速請按 + ");
    	while(input.hasNext())
    	{
    		if(input.next().equals("+"))BMW.speeded_up();
    		System.out.println("現在時速"+BMW.getSpeed());
    		System.out.println("如要加速請按 + ");
    	}
    }
}
class Car
{
	private int speed;
	public void speeded_up()
	{
		if(speed < 5)speed++;
	}
	public int getSpeed()
	{
		return speed;
	}
}

 

這樣會發現當時速到達5km/s時不管怎麼按+,他永遠也不會超過5,所以我們藉此來控制speed的值,甚至能在speeded_up 方法中控制在某一速度時會爆衝阿或是到達5km/s他會熄火歸零之類的,利用公用的方法去存取私用的屬性,這就是物件導向中的封裝精神,你不需要知道該類別的內容是什麼,你只需要藉由某個公用的方法去存取該類別,能達到保護資料的效果

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 雲淡風清 的頭像
    雲淡風清

    FantasyWorld

    雲淡風清 發表在 痞客邦 留言(0) 人氣()