所謂的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他會熄火歸零之類的,利用公用的方法去存取私用的屬性,這就是物件導向中的封裝精神,你不需要知道該類別的內容是什麼,你只需要藉由某個公用的方法去存取該類別,能達到保護資料的效果
全站熱搜