![](/img/trans.png)
[英]How to pass value to a method using object created in main class in Java
[英]How to pass a object to be created as a parameter for a method in Java?
我有三个班级(A班,B班,C班)
Class A extends Class C
Class B extends Class C
我想在Class C
类中创建一个两个类都可以使用的方法,而不是我必须在两个类中都编写相同的方法。 我需要一种方法将在方法中创建的对象作为参数传递,因为这两个类都不同。 我的方法如下:
public static void timer(int arraySize) {
long startTime = System.nanoTime();
Class A myClass = new Class(arraySize);
System.out.println(Arrays.toString(myClass.getArray()));
long endTime = System.nanoTime();
System.out.print("Total time: " + (endTime - startTime)/1000 + " microseconds");
}
如果两个类的行为将相同,您可以通过多态简单地通过超类类型C
引用该对象,如下所示:
class C {
public static void timer(int arraySize, C object) {
long startTime = System.nanoTime();
C myObject = object;
System.out.println(Arrays.toString(myObject.getArray()));
long endTime = System.nanoTime();
System.out.print("Total time: " + (endTime - startTime) / 1000 + " microseconds");
}
}
A
类和B
类将继承静态方法。 object
可以同时使用A
和B
对象
注意:您的方法不是很OO,用相同的类的对象打交道时(如C
类中的对象C
),你倒是应该使该方法访问对象的成员,直接因为它是同一类!
因此,请考虑将您的方法更改为:
class C {
public void timer(int arraySize) {
long startTime = System.nanoTime();
System.out.println(Arrays.toString(this.getArray()));
long endTime = System.nanoTime();
System.out.print("Total time: " + (endTime - startTime) / 1000 + " microseconds");
}
}
如果要实例化A
类或B
类,则需要在类C
将该方法定义为abstract
方法,并在A
和B
覆盖它,例如:
public abstract class C {
public abstract void timer(int arraySize);
}
public class A extends C {
public void timer(int arraySize){
//Some code
A object = new A(arraySize);
//Some code
}
}
public class B extends C {
public void timer(int arraySize){
//Some code
B object = new B(arraySize);
//Some code
}
}
然后您可以使用 C 的引用调用它,例如:
C c = new A();
c.timer(100);
c = new B();
c.timer(100);
这里有更多关于抽象类和继承的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.