gpt4 book ai didi

Java 练习...需要不使用 getter 和 setter 的帮助

转载 作者:行者123 更新时间:2023-12-02 05:51:26 25 4
gpt4 key购买 nike

我有:

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("红色");她说不。

最佳答案

您需要为 Circle 类中的 String color 属性提供 getter,然后像使用 radius 一样使用它>区域

除此之外,我建议您为 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

因此,您可以将String colorprivate更改为public,并且任何类都可以访问此属性并使用它或更改其值没有问题。请注意,这样做会破坏 encapsulation你类(class)的。

更多信息:

关于Java 练习...需要不使用 getter 和 setter 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23500142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com