如何在java中调用一个方法,该方法位于同一个包的另一个类中? 我所知道的是,使用一个对象我们可以从另一个类调用一个方法。 有没有其他方法可以调用不同类的方法?
答案 0 :(得分:10)
创建B类实例:
B b=new B();
b.method();
或在B类中定义静态方法:
class B
{
static void staticMethod();
}
并将其称为:
B.staticMethod();
答案 1 :(得分:4)
方法是对象方法或类方法。
对象方法:它适用于对象。你必须使用一个实例:
instance.method(args...);
类方法:它适用于一个类。它没有隐式实例。你必须使用这个类本身。它更像是程序编程。
ClassWithStaticMethod.method(args...);
<强>反射强>
通过反射,您可以通过编程方式访问方法,无论是对象还是类方法。
实例方法:methodRef.invoke(instance, args...);
类方法:methodRef.invoke(null, args...);
答案 2 :(得分:3)
如果将方法定义为静态,则可以在不首先实例化类的情况下使用它,但是您也没有可用的对象变量。
public class Foo {
public static String Bar() {
return "bla";
}
}
在这种情况下,您可以使用Foo.Bar()
调用它。
答案 3 :(得分:2)
来自Fred Swartz(fredosaurus)的笔记:
有两种方法。
实例方法与对象关联,并使用该对象的实例变量。这是默认设置。
静态方法不使用它们所定义的类的任何对象的实例变量。如果您将方法定义为静态,编译器将给您一个粗鲁的消息您尝试访问任何实例变量。您可以访问静态变量,但除常量外,这是不常见的。静态方法通常从参数中获取所有数据并从这些参数计算某些内容,而不引用变量。这是进行某种通用计算的典型方法。一个很好的例子是预定义的Math
类中的许多实用方法。
从定义类外部,通过在前面添加一个对象来调用实例方法,然后将该对象作为隐式参数传递给实例方法,例如inputTF.setText("");
静态方法通过在其前面加上类名来调用,例如Math.max(i,j);
。奇怪的是,它也可以使用一个对象进行限定,该对象将被忽略,但将使用该对象的类。
这是一种典型的静态方法:
class MyUtils {
. . .
//================================================= mean
public static double mean(int[] p) {
int sum = 0; // sum of all the elements
for (int i=0; i<p.length; i++) {
sum += p[i];
}
return ((double)sum) / p.length;
}//endmethod mean
. . .
}
此方法使用或更改的唯一数据来自参数(当然还有局部变量)。
static
如果上述mean()
方法没有被声明为静态,只要它是从同一个类中调用的,那么它也可以正常工作。如果从类外部调用并且它没有被声明为静态,则必须使用对象进行限定(无用)。即使在类中使用,也有充分的理由将方法定义为静态。
有两种情况。
从同一类中调用
只需编写静态方法名称即可。例如:
// Called from inside the MyUtils class
double avgAtt = mean(attendance);
从课堂外打电话
如果从另一个类调用方法(静态或实例),则必须在方法名称之前指定一些方法,以指定定义方法的类。例如,方法,这是方法将访问的对象。对于静态方法,应指定类名。例如:
// Called from outside the MyUtils class.
double avgAtt = MyUtils.mean(attendance);
如果在它之前指定了一个对象,则将忽略该对象值,并使用该对象的类。
虽然static
方法无法访问实例变量,但它可以访问static
个变量。静态变量的常见用法是定义&#34;常量&#34;。 Java库中的示例是Math.PI
或Color.RED
。他们符合班级名称,因此您知道他们是static
。任何方法static
都可以访问static
变量。实例变量只能通过实例方法访问。
有点特殊但不推荐的是,可以使用类的对象而不是类名来访问静态方法。这很糟糕,因为它会产生使用对象中的某些实例变量的印象,但事实并非如此。
答案 4 :(得分:1)
如果它是静态方法,您可以使用类名代替对象来调用它。
答案 5 :(得分:1)
您可以创建静态方法,也可以将其他类用作类的成员,在构造函数中调用该函数。
public class aClass {
private SomeOtherClass oc;
public class aClass( SomeOtherClass otherClass) {
oc = otherClass;
}
public callOtherClassMethod() {
oc.otherClassMethod();
}
}
答案 6 :(得分:0)
以这种格式进行:
classmehodisin.methodname();
例如:
MyClass1.clearscreen();
我希望这有帮助 注意:该方法必须是静态的。
答案 7 :(得分:-1)
通过调用方法
public class a
{
void sum(int i,int k)
{
System.out.println("THe sum of the number="+(i+k));
}
}
class b
{
public static void main(String[] args)
{
a vc=new a();
vc.sum(10 , 20);
}
}