我仍然对getter和setter方法很困惑。
public class MethodsInstances {
public MethodsInstances(String name){
girlName = name;
}
private String girlName;
public String getName(){
return girlName;
}
public void sayName(){
System.out.printf("Your first gf was %s", getName());
}
}
但是对于“sayName”,为什么不使用getName(),而只是键入girlName呢?这是一样的,因为getName()返回girlName,正如代码中所见。还有,方法必须以get和set开头,还是可以命名为任何你想要的名字?
非常感谢新手程序员Dan B
7条答案
按热度按时间qvk1mo1f1#
getter和setter的意义在于,只有它们才能用来访问它们正在获取或设置的私有变量。这样,您就提供了封装,并且以后重构或修改代码会更容易。
假设你使用
girlName
而不是它的getter函数,那么如果你想添加一个默认值(假设默认名称是'Guest',如果之前没有设置的话),那么你必须修改getter函数和sayName
函数。getter和setter不需要以get和set开头-它们只是普通的成员函数。但是这样做是一种约定。(特别是如果您使用Java Beans)
vfhzx4xs2#
你完全可以在你的例子中直接使用这个变量,主要是因为
sayName()
在同一个类中。除此之外,我认为有三个原因需要getter和setter:
1.这是面向对象编程的一个原则,保持值(状态)私有,并提供与其他类交互的公共方法。
1.带有getter和setter的类通常遵循Java beans设计模式。该模式允许在模板引擎或表达式语言(如JSP或Spring)中使用这些对象。
1.在某些情况下,它可以防止实际错误。例如:
用getter和setter Package 日期变量,它们只对值而不是引用进行操作,可以防止这种情况:
ct3nt3jp3#
你可以在这里使用girlName,你真的不需要调用getName().需要getName的原因()是如果你想得到这个类之外的名字。例如,如果你创建一个新类,然后在新类中创建上面的类对象,并给那个对象分配一个名字(value for girlName)你将不能从new class访问girlName,因为它是私有的..所以你需要一个公共方法来为你获取值。
它也不一定是getName或setName,但这只是为了更容易理解函数在做什么。
jmo0nnb34#
在方法中封装“获取”和“设置”变量的过程是一种常见的设计模式。如果您想要更改底层实现,这将给您更多的自由。
举个例子,假设有一天你想把参数girlName改为一个Girl对象;如果直接从外部类访问girlName,则必须更改所有外部代码。
使用setter方法,您可以简单地更改一个方法并执行
或者,您可能希望确保girlname总是以大写形式返回。
从而在代码设计中给您带来更多的灵活性。
2wnc66cl5#
您必须首先阅读abstraction、encapsulation和OOP,以了解accessors、mutators、immutability和data access。
lztngnrs6#
我们想阻止对变量的直接访问,我们就把变量设为私有变量。当变量是私有的,其他类就不能访问该变量。如果我们把变量设为公共的,那么所有类都可以访问它。
要更改实际的私有变量,我们现在需要公共getter()或setter()。基本的命名约定说,我们将采用变量的名称,并在其前面加上get和/或set。
在您的特定情况下,getGirlname将是正确的。
我们称之为封装
6l7fqoea7#
通过这种方式,您可以检查类并在运行时使用反射调用它们。
高温加热
伊沃·斯托伊科夫