我应该何时通过类初始化或getter方法发送变量?

时间:2013-12-28 01:36:17

标签: java

我设置了一个屏幕,我想将宽度和高度发送到另一个类。我应该在第二个类的初始化中将宽度和高度变量发送到第二个类:ClassB b = new ClassB(width, height);还是最好在{{1}中创建getHeight()getWidth()方法然后在classA中创建ClassA的实例来调用getter方法?

编辑:我觉得在classB中创建classA的实例会是错误的编程,因为除了我需要classBwidth这一事实之外它是不合情理的。

4 个答案:

答案 0 :(得分:1)

Getters 获取值,设置者设置值。你可能意味着制定者。

这取决于你想做什么:

<强> 1。创建实例后可以更改widthheight吗?

是:创建一个setter方法并查看第2号。

否:使用构造函数。

<强> 2。您班级的widthheight核心业务是什么?

是:使用构造函数初始设置它们。

否:不需要使用构造函数。

无论哪种方式,您可能希望获取者确保封装widthheight变量(应将其声明为private)。

答案 1 :(得分:0)

基于你的问题,听起来A类除了高度和宽度之外还有与B类无关的数据,在这种情况下你不应该给B类实例A类。你可能想要得到getter无论如何都是A类,因为您可能不希望代码中任何其他对象随意更新值,这意味着宽度和高度应该是A类中的私有变量。

如果B类需要宽度和高度,我会让它们成为B的构造函数的一部分。否则,我会写2(或4)个构造函数,一个没有参数,一个同时考虑宽度和高度(如果你真的想要彻底,你可以再编写两个构造函数 - 只需要一个高度和一个宽度分别)。这将为用户提供在实例化类型B的对象时传递值的选项。在这种情况下,您还需要在B类中设置高度和宽度的设置器,以便用户在实例化B类型的对象后设置它们。

答案 2 :(得分:0)

在您的上下文中,实现您提到的getter和setter方法是一种很好的做法。 无需在ClassB中创建ClassA实例。就个人而言,我会这样做:

ClassA a = new ClassA(width, height);
ClassB b = new ClassB(a.getWidth(), a.getHeight());

干杯。

答案 3 :(得分:0)

如果尺寸不变,我会将它们定义为公共决赛。

public class ClassA{
   public final width;
   public final height;
   ClassA(width, height){
      this.height=height; 
      this.width=width;
   }
}

打电话给他们:

public class ClassB{
   private final width;
   private final height;
   ClassB(ClassA in){
      this.height=in.height; 
      this.width=in.width;
   }
}

为什么呢? in.getWidth(); vs in.width;:您可以保存五个符号。

那里的生产率提高了55%。