2012-07-23 75 views
1

我需要一個受保護的變量添加到產品類文件添加一個受保護的變量(i附上該文件的當前代碼),我有。我需要將計數變量的訪問修飾符從public更改爲protected。 我該怎麼做?!我需要什麼樣的變化的代碼,使下面添加一個受保護的變量:如何用Java

import java.text.NumberFormat; 

public class Product 
{ 
    private String code; 
    private String description; 
    private double price; 
    public static int count = 0; 

    public Product() 
    { 
     code = ""; 
     description = ""; 
     price = 0; 
    } 

    public void setCode(String code) 
    { 
     this.code = code; 
    } 

    public String getCode(){ 
     return code; 
    } 

    public void setDescription(String description) 
    { 
     this.description = description; 
    } 

    public String getDescription() 
    { 
     return description; 
    } 

    public void setPrice(double price) 
    { 
     this.price = price; 
    } 

    public double getPrice() 
    { 
     return price; 
    } 

    public String getFormattedPrice() 
    { 
     NumberFormat currency = NumberFormat.getCurrencyInstance(); 
     return currency.format(price); 
    } 

    @Override 
    public String toString() 
    { 
     return "Code:  " + code + "\n" + 
       "Description: " + description + "\n" + 
       "Price:  " + this.getFormattedPrice() + "\n"; 
    } 

    public static int getCount() 
    { 
     return count; 
    } 
} 
+0

這是你的作業嗎? – Chakra 2012-07-23 05:09:15

回答

0

正如你聲明count是公開的,你可以改變僅僅通過它來進行保護以同樣的方式多protected關鍵字:

protected static int count = 0; 

注意,這會阻止那些不直接訪問count延長Product其他包中的類。但是,它們仍然能夠從getCount()方法中獲得它的價值,因爲這是公開的。如果你想改變,要得到保護,你可以通過更改關鍵字再次這樣做:

protected static int getCount() 
{ 
    return count; 
} 
+0

是的,我也一樣! :) 謝謝。我只知道自己!很高興! :) – 2012-07-23 05:17:21

0

你的變量,你現在有:

private String code; 
private String description; 
private double price; 
public static int count = 0; 

如果你想保護的計數變量而不是公共的,它應該是:

private String code; 
private String description; 
private double price; 
protected static int count = 0; 
+0

謝謝Mathagan。爲什麼人們會像你的家庭作業一樣寫廢話。是的,如果你陷入困境,你需要人們的幫助,那麼!哇。你知道我明白了什麼。非常簡單! :P愚蠢的我 – 2012-07-23 05:16:24

+0

笑我猜人們好奇 – Matthagan 2012-07-23 05:35:52

-1

試試這個

public static void main(String[] args) 
    { 
    Product p=new Product(); 
    Class productClass = p.getClass(); 
    Field f = productClass.getDeclaredField("count"); 
    f.setAccessible(false); //Make the variable non-accessible 
    } 
+0

有沒有必要做這個使用反射... – 2012-07-23 05:15:28

+0

我還以爲他是在談論運行時的變化... :) – 2012-07-23 05:15:50