好的,所以我有一个作业,我必须在其中创建一个具有一组私人属性的课程,这是我完成的。这变得很棘手,因为我是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,但是只有在确定需要的情况下,才应该添加它们,而不是习惯。

您的构造函数是设置所有成员变量的最佳场所。实际上,如果您使变量最终(一个非常好的习惯,使班级“不可变”)将是您可以分配它们的唯一位置。

当您的对象创建对象时,保证将调用您的构造函数,因此它是设置对象的好地方。在构造函数中,如果您确保对象处于有效状态并且最终成员变量,则不可能将对象置于无效状态 - 这是一种非常方便的练习,可以为您节省很多调试时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top