我设置了一个屏幕,我想将宽度和高度发送到另一个类。我应该在第二个类的初始化中将宽度和高度变量发送到第二个类:ClassB b = new ClassB(width, height);
还是最好在{{1}中创建getHeight()
和getWidth()
方法然后在classA
中创建ClassA
的实例来调用getter方法?
编辑:我觉得在classB
中创建classA
的实例会是错误的编程,因为除了我需要classB
和width
这一事实之外它是不合情理的。
答案 0 :(得分:1)
Getters 获取值,设置者设置值。你可能意味着制定者。
这取决于你想做什么:
<强> 1。创建实例后可以更改width
和height
吗?
是:创建一个setter方法并查看第2号。
否:使用构造函数。
<强> 2。您班级的width
和height
核心业务是什么?
是:使用构造函数初始设置它们。
否:不需要使用构造函数。
无论哪种方式,您可能希望获取者确保封装width
和height
变量(应将其声明为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%。