2014-05-06 63 views
0

我:的Java練習....需要幫助,而無需使用getter和setter

public class Circle { 

//private instance variable 
private double radius = 1;//Declaring "1" as the default value 
private String color = "red";//Declaring "red" as the default color and as a string. 
// default constructor w/out an argument 
public Circle() { 
} 

public Circle(double r){ //constructor that uses double argument which is assigned to radius 
    radius = r; 
    color = "red"; 
} 
//public method "getRadius" 
public double getRadius() { 
    return radius; 
} 
//public method "getArea", used to get the area of the circle. 
public double getArea() { 
    //method returns the Area of a circle using the below formula 
    return Math.PI * radius * radius; 
} 
} 

public class TestCircle { 
// Testing function 
public static void main(String[] args) { 
    Circle c1 = new Circle(); // initialize with default constructor 
    Circle c2 = new Circle(5); // initialize with constructor that takes radius as argument 

    //prints the results of the program. 
    System.out.println("*****************************************"); 
    System.out.println("Details of circle 1: "); 
    System.out.println("Radius: " + c1.getRadius()); 
    System.out.println("Area: " + c1.getArea()); 
    System.out.println("Color: " + color); 
    System.out.println("*****************************************"); 
    System.out.println("Details of circle 2: "); 
    System.out.println("Radius: " + c2.getRadius()); 
    System.out.println("Area: " + c2.getArea()); 
    System.out.println("Color: " + c2.getColor()); 
    System.out.println("*****************************************"); 

我也試圖讓圓的「紅色」打印也是如此。現在踢球者是我的代碼中有以下內容,她說他們是另一種方式。

//Constructor that uses a string argument which is assigned to color 
public Circle(String c) { 
    color = C; 
} 
//public method "getColor", used to get the color of the circle. 
public String getColor() { 
    return color; 
} 
} 

僅供參考....我問她,如果我只是做 的System.out.println( 「紅」); 她說沒有。

+0

什麼是在具有無參數的構造函數,如果你沒有制定者和沒有默認使用? – FatalError

+0

使用反射,如果你想打破一切。 – Nishant

+0

@ n1234哦不,反思不! :P –

回答

2

你需要一個getter在Circle類的String color屬性,然後使用它,你已經與radiusarea做。

除此之外,我建議您爲Circle類中的字段創建setter,以便更改每個實例的屬性值。

(由於這是作業,因此不會給出代碼)。


在陌生的情況下,你不想直接使用在所有任何的getter/setter(這是在現實世界中的應用非常奇怪的),你可能會改變你的屬性的修改,以使對它們的訪問其他類。下面是Java的修改訪問級別:

Modifier Class Package Subclass World 
public  Y  Y  Y   Y 
protected Y  Y  Y   N 
no modifier Y  Y  N   N 
private  Y  N  N   N 

所以,你可以從private改變String colorpublic任何類都可以訪問這個屬性,並使用它或沒有任何問題改變它的值。請注意,通過這樣做,您可以打破課程的encapsulation

更多信息:

+0

它不是功課。我不在學校。我已經擁有計算機科學的學士學位。 – sluger233

+0

我不知道誰是「她」,如果不是你的老師 – skoll

+0

「她」是指朋友。我們都在互相挑戰,讓自己更好地進行編程。我們想成爲程序員,並擁有基本的基礎 – sluger233