2

好的,所以我有一个任务,我必须创建一个具有一组私有属性的类,我已经完成了。它变得很棘手,因为我对 java 编程(或一般编程)相当陌生,并且在封装方面不是很熟练。我以前没有使用过 getter/setter 或构造函数。我了解 getter/setter 方法,但尚未了解构造函数的任何在线信息,甚至还没有了解它们的目的。

我必须为每个属性创建 getter/setter 和构造函数,所以看起来我应该学习使用这些方法。如果有人能给我一个带有构造函数的类的例子,并解释构造函数在做什么,以及为什么我会使用它,那就太好了。

提前谢谢你。

4

2 回答 2

4

首先,欢迎来到编程世界:)

让我们看一个简单的例子。

假设你想编写一个类来表示一个 Square。当您创建一个 Square 对象时,您必须为 Square 赋予某些属性,例如每条边的长度。这就是构造函数发挥作用的地方。

类布局看起来像这样,注意 length_of_each_side 变量没有赋值。

public class Square {
     int length_of_each_side;

     public Square() {
     ...
     }

     public Square(int length) {
     ...
     }
}

如果您不指定正方形的大小,您可以拥有一个默认构造函数,该构造函数将为您提供预定义的 Square。

public Square() {
     length_of_each_side = 1;
}

或者您可以允许某人指定正方形的大小

public Square(int length) {
     length_of_each_side = length;
}

如果我想创建一个预定义的 Square(长度为 1),它看起来像这样

Square mySquare = new Square();

如果我想创建一个 Square 并指定 55 的长度,它看起来像这样

Square mySquare = new Square(55);
于 2010-10-04T22:11:34.113 回答
2

我不确定你在学校是如何看待这个的,或者你的老师告诉你什么,但只是一个建议——不要习惯性地使用 getter 和 setter。它们在 Java 中不是“自动的”是有原因的,因为它们真的不应该存在。

当你有一个对象时,想法是让对象为你做一些事情——换句话说,你应该为你提供作用于变量的方法,而不是获取变量并作用于它然后放回去。

很多时候你无法避免 getter——但只有当你确定需要它们时才应该添加它们,而不是习惯性的问题。

您的构造函数是设置所有成员变量的最佳位置。事实上,如果你将变量设置为 final (一个非常好的习惯,使类“不可变”),构造函数将是你可以分配它们的唯一地方。

保证在创建对象时调用构造函数,因此这是设置对象的好地方。在您的构造函数中,如果您确保对象处于有效状态并且您具有最终成员变量,则不可能使您的对象进入无效状态——这是一种非常方便的做法,可以为您节省大量调试时间。

于 2010-10-04T22:24:43.347 回答