두 개의 조각 A와 B가 있습니다. B는 조각 A를 확장하므로
public class A extends Fragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//other stuff
}
@Override
public void onResume()
{
super.onResume();
someFunctionOnlyUsefulInFragmentA()
}
}
그리고 두 번째 클래스 :
public class B extends A{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//other stuff
}
@Override
public void onResume()
{
super.onResume();
//Problem! I don't want to call function "someFunctionOnlyUsefulInFragmentA()"
}
}
문제는 내가 모든 조각 A의에서 코드를 실행하지 않을 것입니다 onResume()
및 onCreate()
방법,하지만 조각 B. 그러나 나에게 전화를 안드로이드 힘에 사용되는 일부 사용자 지정 코드 super.onCreate()
와 super.onResume()
.
조각 A의 코드를 호출하지 않고 조각 B onCreate()
또는 onResume()
메서드 에서 일부 사용자 지정 코드를 실행하려면 어떻게해야 합니까?
전체 코드 디자인을 변경해야합니까? 그렇다면 어떻게?
문제는 Android 조각이 아닌 상속과 관련이 있습니다. 당신이해야 할 것은, 예를 들어, 다시 생각 클래스 디자인이다 - 대신 클래스를 파생의 B
클래스에서 A
클래스를 소개 BaseFragment
모두 가지고 A
및 B
파생 (일부 기능을 공유), 넣어 someFunctionOnlyUsefulInFragmentA()
만 A
조각. 위에서 시도한 것은 Liskov Substitution Principle 의 명백한 위반입니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다