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