【问题标题】:Control access in methods控制方法中的访问
【发布时间】:2014-12-05 19:16:50
【问题描述】:

我有一个关于 Java 的问题。

我有一个 Say.java 类,它有一些方法,例如 sayHello()saySomething()sayBye()、...

我也有其他课程。我有一个类Person,以及Person 的两个子类:SeniorJunior

我的工作如下:

我必须将 Say.java 类设置为私有,并使用名为 getInstance 的方法创建一个公共类 SayFactory.java。然后,要创建 Say.java 类的新实例,我必须使用一个参数调用我的 getInstance 方法:Senior.java 或 Junior.java 的实例。如果我使用 Senior.java 对象创建 Say.java 的实例,我必须能够访问 Say.java 的所有方法。但是如果我对 Junior.java 做同样的事情,我应该能够访问 Say.java 的所有方法,除了 saySomething()。

有人可以解释一下如何做到这一点以及它是如何工作的吗?

顺便道歉 - 我来自西班牙,所以我的英语不是那么好。如果你不明白这个问题,请告诉我,我会尽量写得更清楚。

【问题讨论】:

  • 创建公共 getter/setter?
  • “有人知道怎么做吗?” - 是的。很多人都知道。如果您编写程序,您也会知道!提示:如果您自己编写此程序,您将了解有关 Java 的更多信息。 (您将通过尝试了解更多信息......)
  • @StephenC 或者至少如果他们尝试写一些东西,然后就你面临的具体问题寻求帮助。目前,这太宽泛了,因为它似乎本质上是“为我做作业”。
  • @Maik 您似乎对您需要做什么有相当全面的说明,但您没有告诉我们您在尝试执行此操作时遇到了什么问题。您需要尝试编写此程序,然后在遇到具体问题时回来询问。

标签: java inheritance encapsulation instanceof


【解决方案1】:

首先将此作为将课程设为私有的答案:Java: Why can we define a top level class as private?

对于您想要“私有”的对象,您必须将其所有字段和可能的方法设为私有(取决于您需要什么)。然后正如@user1071777 提到的设置公共getter 和setter。

关于调用对象方法的一些基本信息: http://docs.oracle.com/javase/tutorial/java/javaOO/usingobject.html

要创建类之间的连接,您可以让一个类将另一个类作为其定义的一部分,并通过构造函数或公共设置器进行设置。

【讨论】:

    【解决方案2】:

    我知道我不能写Private Class,但我可以做一个内部类。

    我有一个课程SayFactory,在这个课程中我有另一个课程Say

    SayFactory 有一个名为 getInstance() 的方法,在这个方法中我创建了一个 Say 类的对象并返回这个对象。问题是,如果getInstance()的参数是Junior的对象,如何拒绝对方法saySomething()的访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-11
      • 2016-03-18
      • 1970-01-01
      • 2020-04-24
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      • 2015-08-02
      相关资源
      最近更新 更多