Android의 추상적인 클래스와 인터페이스 실천

7416 단어 Java 기본 사항
1. 추상류에 대해
추상류에 대해 말하자면 반드시 추상적인 방법을 언급해야 한다. 추상적인 방법은 유형에 방법체가 없는 방법을 가리키고 추상류 중의 추상적인 방법은 반드시 유형에 의해 실현되어야 한다.추상적인 방법을 포함하는 류를 추상류라고 하는데 만약에 추상류가 추상적인 방법을 포함하지 않는다면 되겠습니까?답은 가능하지만 추상류 자체의 용도와 의미를 잃게 된다. 추상적인 방법은 계승을 위해 존재하기 때문이다.
주의점
4
  • 추상류에는 구체적인 실현 방법이 없기 때문에 추상류를 사용하여 대상을 만들 수 없다

  • 4
  • 추상 클래스는private로 성명할 수 없고 abstract는final과 같은 클래스를 병렬적으로 수식할 수 없다. 그렇지 않으면 하위 클래스는 계승할 수 없다

  • 4
  • 만약에 자류가 부류 중의 추상적인 방법을 실현하지 못한다면 자류도 반드시 추상류로 정의해야 한다

  • 4
  • 추상류 중의 일반적인 방법은 실현할 필요가 없지만 자류 중의 추상적인 방법은 부류의 추상적인 방법과 동명할 수 없다

  • 4
  • abstract는private,static,final 또는native와 같은 방법으로 수식할 수 없습니다

  • 2. 인터페이스 정보
    인터페이스는 추상적인 클래스보다 더 추상적인'클래스'이다.'클래스'를 붙이는 이유는 인터페이스에 정적 코드 블록과 정적 방법을 포함할 수 없기 때문이다. 또한 인터페이스에서 변수를 정의하지 않고 하위 클래스는implements 키워드로 인터페이스를 실현하기 때문이다.인터페이스의 변수는 public static final 변수로 은밀하게 지정됩니다. (또한 public static final 변수만 가능하며,private 수식으로 컴파일 오류를 보고할 수 있습니다.) 클래스 이름으로 직접 접근할 수 있습니다: Implement Class.방법은 은밀하게public abstract 방법으로 지정되고,public abstract 방법만 지정될 수 있으며, 인터페이스의 모든 방법은 구체적으로 실현될 수 없으며, 인터페이스의 방법은 반드시 추상적인 방법이어야 한다.
    인터페이스를 실현하는 비추상적인 서브클래스는 반드시 이 인터페이스의 모든 방법을 실현해야 한다.추상적인 자류는 실현하지 않아도 된다.새 조작부호를 사용하여 인터페이스를 실례화할 수 없지만, 인터페이스 변수를 설명할 수 있습니다. 이 변수는 인터페이스를 실현하는 클래스의 대상을 인용해야 합니다.instanceof를 사용하여 대상이 특정한 인터페이스를 실현했는지 검사할 수 있습니다.예: if(anObject instanceof Comparable) {}.
    3. 추상류와 인터페이스의 차이
  • 1.하위 클래스는 하나의 추상 클래스만 계승할 수 있지만 여러 가지 방법을 실현할 수 있다
  • 2.추상 클래스에는 구체적인 구성원 방법이 있을 수 있지만 인터페이스에는public abstract 추상 방법만 존재할 수 있다
  • 3.추상 클래스의 구성원 변수는 여러 종류가 될 수 있지만 인터페이스의 구성원 변수는public static final 형식만 될 수 있습니다

  • 4. 안드로이드에서 구체적으로 사용
    디자인 차원이 다르기 때문에 추상류는 여러 자류의 부류로서 하나의 템플릿식 디자인 모델이다. 만약에 새로운 방법을 추가해야 한다면 추상류에서 실현하면 되고 모든 자류를 수정할 필요가 없다.한편, 인터페이스는 일종의 행위 표준과 같고 방사식 디자인 모델로 표준이 바뀌면 모든 종속도 이에 상응하여 바뀌어야 한다.
    인터페이스 인스턴스
    public interface IOpenApiDataServiceCallback<T> {  
     public abstract void onGetData(T data);  
     public abstract void onGetError(int errorCode, String errorMsg, Throwable error);  
    }   

    하위 클래스에서의 실현
    @Override  
     public void onGetData(ActionResponse data) {  
      mActivitiesLv.onRefreshComplete() ;  
      if(data.isSuccess()){  
       mMultiStateView.setViewState(MultiStateView.ViewState.CONTENT,"");  
       mAdapter.clear() ;  
       mAdapter.addData(data.data) ;  
       mAdapter.notifyDataSetChanged() ;  
      }else{  
       mMultiStateView.setViewState(MultiStateView.ViewState.EMPTY,data.msg);  
      }  
     }  
    
     @Override  
     public void onGetError(int errorCode, String errorMsg, Throwable error) {  
      mMultiStateView.setViewState(MultiStateView.ViewState.ERROR,this.getResources().getString(R.string.net_error_tip));  
     }

    추상적 방법
    public abstract class BaseActivity extends BaseProtectActivity {  
     protected TitleBarView mHeaderMenu;  
     protected void initHeader(){   
      mHeaderMenu = (TitleBarView) findViewById(R.id.main_header) ;  
      if(mHeaderMenu!=null){   
       mHeaderMenu.setCommonTitle(View.VISIBLE, View.VISIBLE, View.GONE, View.GONE) ;  
       mHeaderMenu.setBtnLeft(R.drawable.head_back,  
         R.string.whitespace);   
       mHeaderMenu.setBtnLeftOnclickListener(new OnClickListener() {  
    
        @Override  
        public void onClick(View v) {  
         finish();  
        }  
       }) ;  
      }  
     };  
    
     @Override  
     protected void onCreate(Bundle savedInstanceState) {  
      super.onCreate(savedInstanceState);  
      //SwipeBackHelper.onCreate(this);  
      setContentView(getContentLayout());  
      initHeader();  
      initView();  
      setListener() ;  
     }  
    
     @Override  
     protected void onPostCreate(Bundle savedInstanceState) {  
      super.onPostCreate(savedInstanceState);  
      //SwipeBackHelper.onPostCreate(this);  
     }  
    
     @Override  
     protected void onDestroy() {  
      super.onDestroy();  
      //SwipeBackHelper.onDestroy(this);  
     }  
    
    
     public void setListener() {}  
    
     public void initView(){};  
    
     protected abstract int getContentLayout();  
    
     public void afterLogin(){} ;  
    }  

    하위 클래스에서의 실현
    protected int getContentLayout() {  
      return R.layout.mine_action_center;  
     }  

    좋은 웹페이지 즐겨찾기