2012-11-27 5 views
2

두 클래스가 있는데, 기본 클래스 인 Base 클래스에서 파생 된 DerivedOne 및 DerivedTwo를 예로 들어 보겠습니다.동일한베이스에서 파생 된 여러 클래스의 객체 비교

DerivedOne d1; 
DerivedTwo d2; 

내가 D1과 D2 비교할 때, 난 항상 작게 D1 싶습니다, 즉 DerivedOne의 목적은 DerivedTwo의 대상보다 더 높은 우선 순위를 가져야한다 :

가정 나는이 있습니다 . 가장 좋은 방법은 무엇입니까?

+3

를 게시하여 진짜 문제 상황. 이것은 실제처럼 보이지 않거나별로 의미가 없습니다. 그것들은 당신이 게시 한 객체가 아니라 오히려'참조 '입니다. –

답변

2

슈퍼 클래스에서 변수를 우선 순위로 선언하십시오.

그리고 하위 클래스 생성자에서 초기화하십시오.

class A 
{ 
int priority; 
} 

class Derived1 
{ 
Derived1() 
{ 
    priority=1; 
} 
} 


class Derived2 
{ 
Derived2() 
{ 
priority=0; 
} 
} 
4

이것이 가장 좋으면 잘 모르겠지만 비교기 내에서 instanceof 연산자를 사용하는 것이 좋습니다.

2

의 적절한 구현 오브젝트를 모두 확인은 다음과 같이 Comparable<Derivedparent>interface (또는 부모의 구현과 서브 클래스 오버라이드) 다음 compareTo 메소드에 넣어 뭔가를 구현합니다

public class DerivedOne{ 

public int compareTo(DerivedParent dp){ 
if (dp.instanceOf(DerivedTwo){ 
    return -1; 
} 
//More comparisons 
} 
} 


public class DerivedTwo{ 

public int compareTo(DerivedParent dp){ 
if (dp.instanceOf(DerivedOne){ 
    return 1; 
} 
//More comparisons 
} 
}