题
好的,所以我有一个作业,我必须在其中创建一个具有一组私人属性的课程,这是我完成的。这变得很棘手,因为我是Java编程(或一般编程)的新手,并且在封装方面并不是很好。我以前没有使用过Getters/setters或构造函数。我了解Getter/Setter方法,但尚未在线了解构造函数的任何信息,甚至了解其目的。
我必须为每个属性创建Getters/setter和构造函数,因此我似乎应该学会使用这些方法。如果有人可以给我一个与构造函数的课程的例子,并解释构造函数在做什么,以及为什么我会使用它,那就太好了。
提前谢谢你。
解决方案
首先,欢迎来到编程世界:)
让我们看看一个简单的示例。
假设您想编程课程以代表正方形。创建正方形对象时,您必须给出某些属性,例如每一侧的长度。这是构造函数发挥作用的地方。
类的布局看起来像这样,请注意length_of_each_side变量未分配一个值。
public class Square {
int length_of_each_side;
public Square() {
...
}
public Square(int length) {
...
}
}
您可以拥有一个默认的构造函数,如果您不指定正方形的大小,它将为您提供预定义的正方形。
public Square() {
length_of_each_side = 1;
}
或者您可以允许某人指定正方形的大小
public Square(int length) {
length_of_each_side = length;
}
如果我想创建一个预定义的正方形(长度1),看起来像这样
Square mySquare = new Square();
如果我想创建一个正方形并指定55的长度,则看起来像这样
Square mySquare = new Square(55);
其他提示
我不确定您在学校中如何看待这一点,或者您的老师告诉您的是什么,而只是一个建议 - 不使用习惯,不要将getters和setters用作习惯。他们在Java中不是“自动”的原因,这是因为他们真的不应该在那里。
当您有一个对象时,这个想法是要求对象为您做某事 - 换句话说,您应该提供对变量作用的方法,而不是获得变量并在其上作用并将其放回原处。
在很多时候,您无法避免获得Getters,但是只有在确定需要的情况下,才应该添加它们,而不是习惯。
您的构造函数是设置所有成员变量的最佳场所。实际上,如果您使变量最终(一个非常好的习惯,使班级“不可变”)将是您可以分配它们的唯一位置。
当您的对象创建对象时,保证将调用您的构造函数,因此它是设置对象的好地方。在构造函数中,如果您确保对象处于有效状态并且最终成员变量,则不可能将对象置于无效状态 - 这是一种非常方便的练习,可以为您节省很多调试时间。