考虑我有一个名为Validation
的类,有五种方法。所有方法都非常复杂和庞大。在我的应用程序的某个部分,我需要创建一个Validation
对象,但我只会使用该对象中的一个方法。我可以使方法static
实现我的目的,但是为了使应用程序的其余部分继续工作,这些方法应该是非静态的。
那么有没有办法可以创建一个只包含一个非静态方法的类的对象?
答案 0 :(得分:1)
没有
关于您可以做的最好的事情(回答问题的答案)是制作方法protected
并且具有Validation
的子类extends
。然后,如果所有其他方法都是private
,那么该对象只有一个protected
。
如,
public class Validation {
private void method1() {}
private void method2() {}
protected void method3() {}
private void method4() {}
}
...
public class RestrictedValidation extends Validation { }
...
public static void main(String[] args) {
RestrictedValidation validation = new RestrictedValidation();
validation.method1(); //compiler error
validation.method2(); //compiler error
validation.method3(); //success
validation.method4(); //compiler error
}
但是,是的。我想不出一个有效的用例。
答案 1 :(得分:0)
你可以通过继承来解决这个问题,其中ValidationA将包含大多数客户端使用的常用方法(这里是你的一个特定方法),以及一个ValidationB类,它扩展了ValidationA并添加了更多专门的方法。
或者根据情况,它可能是两个完全不同的对象。
答案 2 :(得分:0)
不,没有这样的方法。对象由状态和相关行为组成。对象将其状态存储在字段中,并通过方法公开其行为。方法在对象的内部状态上运行,并作为对象到对象通信的主要机制。
你所说的是创造一个人物对象(已经定义了行走和跑步的行为),但他应该只走路而不是跑步。它没有任何意义。 Jeff Gohlke提供了一个很好的解决方案