2013-04-22 2 views
0

주어진 두 클래스, 하나는 내 범위를 벗어나는 하위 클래스로, 예를 들어 영향을받지 않습니다.Java : Subclass 클래스와 하위 클래스 (모두 범위를 벗어남) 동시 발생

public class Bla { 
} 

public class SubBla extends Bla { 
} 

코드를 반복하거나 SubBla의 특수 기능을 제한하지 않고 어떻게 Bla 및 SubBla의 사용자 정의 하위 클래스를 만들 수 있습니까?

편집 :

것은이 전 서브 클래스는 안드로이드 수업 활동 및 ListActivity를 필요로한다고 가정 해 봅시다하십시오 litte 물건을 정리하기 위해,

public class MyBla extends Bla { 
    public void someOverriddenMethodOfBla() 
    { 
     super.someOverriddenMethodOfBla(); 
     // do something custom 
    } 
} 

public class MySubBla extends SubBla { 

    // repeated code: this should do the same as MyBla's customized method 
    public void someOverriddenMethodOfBla() 
    { 
     super.someOverriddenMethodOfBla(); 
     // do the same custom stuff as in MyBla's method 
    } 

} 

편집 2 : 그래서 난 필요 없어 활동의 이제 모두과 같은 onCreate 사용자 정의를 추가하려는 경우 모두입니다. 코드를 반복하지 않고이를 어떻게 처리 할 수 ​​있습니까?

감사합니다.

+0

서브 클래 싱의 목적은 재사용입니다. 그래서 코드를 반복하지 마십시오 (그러나 오버라이드/오버로드 할 수 있습니다) ... 좀 더 자세히 설명 할 수 있습니까? – Vikram

+0

당신은'MyBla' 클래스를 전혀 필요로하지 않습니다. B가 A를 확장하면 B를 C 확장 B로 하위 클래스 화하면 ... C ** IS ** A!도 필요하지 않습니다. C 확장 A와 D 확장 B가 필요 없습니다. 그래서 당신의 예에서 필요한 것은'My Sububla extends Subbla'입니다. – Vikram

+0

아니요, MyBla도 직접 필요합니다. 그게 문제입니다;) – user973224

답변

0

실제로 상속의 목적은 코드를 재사용한다는 것입니다. java에는 메서드의 액세스 가능성이 동일한 물마루 상속으로 남아 있음을 의미하는 공용 상속 만 존재합니다.

MyBla가 Bla를 확장하면 Bla의 모든 public 메소드가 MyBla 클래스에 계속 표시됩니다.

1

올바르게 이해하면 SubBla의 구현을 무시하고 SubBla 하위 클래스에서 직접 Bla의 구현을 호출하려고합니다. 당신이하려고하는 것은 근본적으로는 super.super이며, 자바에서는 수행 할 수 없습니다.

here에 대한 좋은 설명이 있습니다.

0

예를 들어 Android ActivityListActivity을 고려하면 ListActivity의 하위 클래스는 CustomListActivity입니다. CustomListActivityonCreate()의 버전을 추가하십시오. 이제 Activity 또는 ListActivity을 사용하는 대신 응용 프로그램에서 CustomListActivity을 사용하십시오.

+0

하지만 맞춤형 일반 활동을 사용해야합니다. 어떻게해야합니까? – user973224

+0

안드로이드 API에 대해 잘 모르겠다. 유감스럽게도 귀하의 의견을 이해할 수 없다고 생각합니다. 다음과 같이하십시오 :'Activity','ListActivity' 및'CustomListActivity'가 있습니다. 예를 들어 적절한 클래스를 인스턴스화합니다 :'Activity'에서'onCreate()'로 할 수있는 클래스 'A'를 가지고 있다면,'Activity activity = new Activity();를 인스턴스화하십시오'클래스'B'를 원한다면 사용자 정의'onCreate()'를 사용하여'custom customListActivity = new CustomListActivity();'인스턴스를 생성하고이 인스턴스를 사용해야합니다. – Vikram

+0

아니요, 예를 들어 사용자 정의 된 onCreate와 함께 Activity 및 ListActivity가 필요합니다. – user973224