![](/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.