2014-05-09 31 views
0

我需要做以下的事情:Java函數與參數兩類

class A 
int length, width, height; 

class B 
int length, width, density; 

(重要的是,這些類都有不同的參數)

這是架構,而不是代碼。現在,我想提出一個函數,它會做這樣的事情:

function compare(class first, class second) 
{ 
    if(first.length > second.length) 
    { ... } 
    else 
    { ... } 
} 

,並調用該函數:compare(A,B)

是否可以像我描述的那樣做,或者有更好的方法存在?

+0

完全可以做到的。由於您正在使用直接訪問成員變量,因此您需要將它們公開。第一類是 –

+0

,這是錯誤的。 – Visme

回答

0

做一個班級hirarchy。定義一個超類包含長度和寬度;有它的實現Comparable只能通過超類做長寬比較;然後通過子類來獲取A和B類,以便默認情況下不會比較寬度/高度。

0

首先,你定義一個超類A

public class A { 
    private int length; 

    public A(int length) { 
     this.length = length' 
    } 

    public int getLength() { return length; } 
} 

,並創建一個子類,這兩個類,BC

public class B extends A { 
    public B(int length) { 
     super(length); 
    } 
} 

public class C extends A { 
    public B(int length) { 
     super(length); 
    } 
} 

現在你可以創建一個名爲方法:

public void compare(A first, A second) { 
    if(first.getLength() > second.getLength()) { 
     // Do something.. 
    } 
} 

這可以如下叫:

A b = new B(5); 

A c = new C(6); 

compare(b, c); 
+0

爲什麼繼承是必要的?爲什麼要有C類? –

+0

我想你可以有一個'C'的接口,但考慮到用戶想要訪問的共同特性,將它移到超類是有道理的。 – christopher