我有一个没有修饰符的类(默认),它有一个名为mymeth的公共方法。我知道当我在包内时我可以访问该方法。但是,当我在包外时,我想访问该方法。有没有人知道如何做到这一点。理论上我认为它应该是可能的,因为公共方法意味着世界的访问。这是我的类和方法的例子:
class myclass{
public void mymeth(int i,int b){
.....
}
}
答案 0 :(得分:1)
将myclass
类设为public
。
**仅供参考,Java中的类从大写字母开始
答案 1 :(得分:0)
将myclass
设置为public
,然后将其放入您需要使用的类myclass
的构建路径中。
答案 2 :(得分:0)
public interface SomeInterface{
public void mymeth();
}
class MyClass implements SomeInterface{
public void mymeth(){
}
}
//is in the same package as MyClass
public MyClassFactory{
public SomeInterface create(/*parameters*/){
//create instance from parameters
//For your case
MyClass instanceOfAnyClassThatImplementsSomeInterface = new MyClass(/*pass the parameters*/);
return instanceOfAnyClassThatImplementsSomeInterface;
}
}
其中一种方法已在答案中定义,但如果您想限制该类的公共访问,则可以创建一个界面并通过它访问该方法。
答案 3 :(得分:0)
在您的代码中,myclass
具有默认(包级别)访问修饰符。应使用public
访问修饰符声明它,以便可以在其包之外访问它。有关详情,请详细了解Controlling Access in Java。
作为旁注,Java标准要求您将类名中的每个单词大写,因此您应该使用MyClass
。我推荐你Java Conventions document。
答案 4 :(得分:0)
考虑使用与MyClass相同的包名创建另一个公共类MyChild,并从MyChild类公开该方法
public class MyChild extends MyClass {
public void myTestMethod(){
super.myTestMethod
}
}
现在,在您要使用该方法的类中,只需使用MyChild类的实例
即可MyChild m = new MyChild();
m.myTestMethod();
干杯:)
答案 5 :(得分:0)
直接你不能。 '公共'使一切都可见。但是,如果你看不到课程,就很难打电话给任何人。然而,
您可以使用公共类扩展默认类,最终公开myMeth。
PubClass.java
package p1;
class DefClass{
public void myMeth(){
System.out.println("from myMeth!");
}
}
public class PubClass extends DefClass{
public PubClass(){
super();
}
}
MainClass.java
package p2;
class MainClass {
public static void main(String[] args) {
p1.PubClass pub = new p1.PubClass();
pub.myMeth();
}
}
输出:
from myMeth!
实际的用途是覆盖隐藏类中的公共已知方法。您可以在隐藏类中实现公共方法,因此世界可以调用您的公共方法(而不是公共实现),而不会暴露类。例如,DefClass在此处覆盖Object类的公共方法:
PubClass.java
package p1;
class DefClass{
public String toString(){
return "DefClass here. Trying to explain a concept.";
}
}
public class PubClass extends DefClass{
public PubClass(){
super();
}
}
MainClass.java
package p2;
class MainClass {
public static void main(String[] args) {
p1.PubClass pub = new p1.PubClass();
System.out.println(pub.toString());
}
}
输出:
DefClass here. Trying to explain a concept.