【问题标题】:How to change and get objects from aother class without declaring it?如何在不声明的情况下从另一个类更改和获取对象?
【发布时间】:2019-04-01 19:24:30
【问题描述】:

我是 Java 新手。我尝试从一个类中获取和更改对象(例如:类相机或类麦克风和对象camera1、camera2、camera3、mic1、mic2、mic3在他们的类中,每个都有价格、名称、分数)我想得到一个的名字反对并从另一个类更改价格而不创建新类。

这是第一堂课:

public class Microphone{
String name;
int price;
/** Constructors, setters and getters */

Microphone mic1 = new Microphone("mic1",200);
Microphone mic2 = new Microphone("mic2",300);}

这是第二课:

public class Camera{
String name;
int price;
/** Constructors, setters and getters */
Camera cam1 = new Camera("cam1",500);
Camera cam2 = new Camera("cam2",1000);}

在主类中(或在商店、菜单等不同的类中)我想获取对象的价格,例如 cam1.getPrice 和 mic2.setPrice,以便与游戏中玩家的统计数据进行比较如果他能负担得起并改变它的价格。

【问题讨论】:

  • 创建 settersgetters 并使用它们。
  • 我观察到,对于 getter 和 setter,我需要在该类中创建一个新对象。我希望对象在类之间传递。
  • 如果我理解正确,你会想要让你的类“静态”。这样,内存中只存在该类的一个实例,无需在 main 中创建任何实例。

标签: java class scope


【解决方案1】:

您可以在 Main 类中使用您的对象类型创建一个 ArrayList 并以这种方式管理它们。然后,您可以根据需要修改对象。如果您创建一个接口类,您可以执行以下操作: 首先创建接口类,我命名我的设备并给它一个方法,设置成本。您可以添加任何需要添加的方法,例如 setDate、setModel、setName.... 等

public interface Device
{
    void setCost(double costIn);
}

接下来创建麦克风类并让它实现设备。之后,您需要将 Device 方法添加到类中。

public class Microphone implements Device
{
    double cost = 0.0;

    public void setCost(double costIn)
    {
        cost = costIn;

    }

}

这是另一个带有 Camera 的类示例,也带有一个数据成员。

public class Camera implements Device
{

    double cost = 0.0;

    public void setCost(double costIn)
    {
        cost = costIn;

    }

    }

现在在您的主类中,您可以将所有设备放在一个 ArrayList 中,以便于操作和控制。

    public static void main(String[] args) throws FileNotFoundException
        {
            ArrayList<Device> arr = new ArrayList<Device>();
            arr.add(new Microphone());
            arr.add(new Camera());
        }

老实说,有很多方法可以解决您的问题,这只是一个示例。

【讨论】:

  • 当我想修改或获取 "arr" ArrayList 中一个对象的字段时我会做什么。如果我在main中声明它,我还需要在其他类中声明它吗?
【解决方案2】:
  • 创建一个类(也称为模型类),例如Car。
  • 然后在该类中定义相关属性。
  • 放入完整的 args 构造函数。
  • 制作 setter 和 getter。

    public class Car {
     private String name;
    
     Car(String name){
        this name=name; 
     }
    
     public void setName(String name) {
         this.name = name;
     }
    
     public String getName() {
         return name;
     }
    

    }

因此,您可以使用 getter 和 setter 更改或获取已创建的对象。 示例:汽车 c1=new Car("Audi");如果您想更改汽车名称 c1.setName("丰田");

【讨论】:

  • 我无法从另一个类访问一个对象的字段,该字段在另一个类中声明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-09
  • 1970-01-01
相关资源
最近更新 更多