如何在Java中使用私有方法
我得到了一个具有私有方法的类,比如setCoors(intx,inty)。该类的构造函数中也包含setCoors。在另一个类中,我想要一个调用setCoors的方法setLocation。这可能吗
新问题:
如果不允许我将方法设置为public,这是否可能
public class Coordinate{
public Coordinate(int a, int b){
setCoors(a,b)
}
private void setCoords(int x, int y)
}
public class Location{
private Coordinate loc;
public void setLocation(int a, int b)
loc = new Coordinate(a,b)
}
# 1 楼答案
最好和最有用的答案取决于问题的背景,我认为,这并不完全显而易见
如果这个问题是一个关于私人的意图含义的新手问题,那么回答“否”是完全合适的。即:
现在,如果,好吧,也许这是一个延伸(谢谢你,布莱恩:)),这个问题来自一个更“高级”的背景,在这个背景下,我们正在研究“我知道私有意味着私有,但有没有语言漏洞”,那么,就有这样一个漏洞。事情是这样的:
输出:
当然,这真的不是应用程序程序员会做的事情。但是,这样一件事可以做这一事实值得知道,而不是应该忽略的事情。不管怎样,伊姆霍
# 2 楼答案
在定义
private
方法的类之外,不能访问任何方法# 3 楼答案
private
表示只能在定义的类内访问它# 4 楼答案
private
表示它是私有的如果你想让其他班级来称呼它,也许你不应该让它成为私人的
# 5 楼答案
否,
private
表示只能在定义该方法的类内部调用该方法。您可能需要让setLocation
创建setCoords
驻留的类的新实例,或者更改setCoords
上的可见性编辑:您发布的代码将起作用。请注意
Location
类的任何实例都将绑定到它自己的Coordinate
对象。如果在代码的其他地方创建一个新的Coordinate
对象,则无法修改其内部状态。换句话说,这条线将创建对象
myCoord
,该对象将永远具有坐标4
和5
# 6 楼答案
做家庭作业的孩子:答案是否定的。工作需要疯狂工作的家伙:答案是肯定的。但是,更重要的是,
setCoors
方法不应该接受int参数。它应该有两个SilverBullet
对象