gpt4 book ai didi

java - OOP 问题,即在哪里放置单独的类?

转载 作者:行者123 更新时间:2023-11-30 06:47:35 24 4
gpt4 key购买 nike

我正在研究在面向对象编程程序中使用单独的类。

  1. 您会在单独的 .java 文件中创建单独的类和程序本身还是在相同的文件中?

如:

public class filename {
// ... content
}

class name {

}
  1. 您可以在单独的类中使用 Scanner,还是应该在 main() 方法中使用它?
    如果是,怎么办?

  2. 假设您必须在 main() 方法中使用 Scanner,并且您声明了一个新变量 input 并将其初始化为 Scanner 输入。
    您如何将其设置为单独类中的变量之一?你会做一个新的对象并做吗。

例子:

public class TestSimpleCircle {
public static void main(String[] args {
SimpleCircle circle1 = new SimpleCircle();
System.out.println("The area of the circle of radius " + circle1.radius + " is " + circle1.getArea());

// Create a circle with radius 25
SimpleCircle circle2 = new SimpleCircle(25); System.out.println("The area of the circle of radius " + circle2.radius + " is " + circle2.getArea());

// Create a circle with radius 125
SimpleCircle circle3 = new SimpleCircle(125); System.out.println("The area of the circle of radius " + circle3.radius + " is " + circle3.getArea());

// Modify circle radius
circle2.radius = 100; // or circle2.setRadius(100) System.out.println("The area of the circle of radius " + circle2.radius + " is " + circle2.getArea());
}
}

class SimpleCircle {
double radius;

SimpleCircle() {
radius = 1;
}

SimpleCircle(double newRadius) {
radius = newRadius;
}

double getArea() {
return radius * radius * Math.PI;
}

double getPerimeter() {
return 2 * radius * Math.PI;
}

void setRadius(double newRadius) {
radius = newRadius;
}
}

...那个(例如 circle1.getArea())?

  1. 当您在单独的类中创建变量时,它们是否以任何方式连接到 main() 方法或不同类中具有相同名称的变量?

最佳答案

Would you create the separate class and the program itself in separate .java files or the same*?

Every class in Java should be in its own file但是您可以在一个文件中创建多个类。例如

class A{
public A(){
System.out.println("A created");
}
}

public class Main {
public static void main(String[] args) {
A x = new A();
}
}

Can you use Scanner within the separate class, or should you use it in main() method? If so, how?

取决于您的应用。许多人更喜欢尽可能地组织和分离,所以最重要的建议是让它成为自己的类(class)。但是对于非常简单的示例和应用程序,我只是将它放在 main() 方法中,或者如果我在任何方法中只使用一次。 Scanner 本身就是一个类,因此如果您创建另一个类只是为了单独包装它,那真的不值得。

您可以将 Scanner 创建为任何类的成员变量,并在有一些方法需要使用它时使用它。

这些只是一些想法,完全取决于您的设计、应用行为和个人推荐

至于如何,这里有一个例子

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a number");
int number = sc.nextInt();
System.out.println("You entered number " + number);
}
}

Suppose you have to use Scanner in main() method, and you declared a new variable input and initialized it as the Scanner input. How would you set that as one of the variables in the separate class? Would you make a new object and do...

是的,我会创建该类的新对象并使用输入值初始化其成员。或者我将 Scanner 放在类中,以询问使用不带参数的构造函数创建的每个对象的半径。有许多不同的方法,其中任何一种都没有对错之分。尽可能避免重复和依赖。

这是您编辑的代码,其中包含这样做的示例

import java.util.Scanner;

public class TestSimpleCircle {
public static void main(String[] args) {

System.out.println("Enter radius of your choice please");
Scanner sc = new Scanner(System.in);

SimpleCircle circle1 = new SimpleCircle(sc.nextInt()); // taking the radius as input

System.out.println("The area of the circle of radius " + circle1.radius + " is " + circle1.getArea());

// Create a circle with radius 25
SimpleCircle circle2 = new SimpleCircle(25);
System.out.println("The area of the circle of radius " + circle2.radius + " is " + circle2.getArea());

// Create a circle with radius 125
SimpleCircle circle3 = new SimpleCircle(125);
System.out.println("The area of the circle of radius " + circle3.radius + " is " + circle3.getArea());

// Modify circle radius
circle2.radius = 100;
System.out.println("The area of the circle of radius " + circle2.radius + " is " + circle2.getArea());

}
}

class SimpleCircle {
double radius;

SimpleCircle() {
radius = 1;
}

SimpleCircle(double newRadius) {
radius = newRadius;
}

double getArea() {
return radius * radius * Math.PI;
}

double getPerimeter() {
return 2 * radius * Math.PI;
}

void setRadius(double newRadius) {
radius = newRadius;
}
}

关于java - OOP 问题,即在哪里放置单独的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45763037/

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