android中抽象类,和抽象方法,接口的区别与用法实例

1.抽象类:含有抽象方法的类被称为抽象类里面可以有抽象的方法和具体的方法体
2.抽象方法:指在类中没有方法体的方法不能被声明为private,且abstract不能与final并列修饰同一个类,否则子类无 法继承**
示例代码包含抽象类和类中抽象方法(常用的抽象类例如BaseActivity,BsseFragment等里面可以有具体的方法,和抽象方法,也没有可以抽象方法 但是就失去了抽象方法就是为了寄存的意义了)
public abstract class BaseActivity extends FragmentActivity {  **抽象类**,**抽象类**,**抽象类**

@Override
protected void onCreate(Bundle savedInstanceState) {
    if (savedInstanceState != null) {
        savedInstanceState.putParcelable("android:support:fragments",null);
    }
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setLayout();
    // 注入控件
    ViewUtils.inject(this);
    init(savedInstanceState);
}

/**
 * 设置布局
 */
public abstract void setLayout(); **抽象方法没有方法体,抽象方法没有方法体**

/**
 * 填充数据
 */
public abstract void init(Bundle savedInstanceState);**抽象方法没有方法体,抽象方法没有方法体**

/**
 * 通过类名启动Activity
 *
 * @param pClass
 */
protected void openActivity(Class<?> pClass) {  **具体方法有具体方法体,具体方法有具体方法体**
    openActivity(pClass, null);
}
    }
子类继承抽象类后并实现抽象方法的实例
public class MainActivity extends BaseActivity{
@Override
public void setLayout() {   **子类继承父类的抽象方法重写方法体**
    setContentView(R.layout.activity_main);
}

   @Override
public void init(Bundle savedInstanceState) { **子类继承父类的抽象方法重写方法体**

}

}

3.接口类:接口是一种比抽象类还要抽象的“类”不能含有静态代码块以及静态方法一般用interface修饰,并且一般不在接口中定义变量,子类 采用implements关键字来实现接口

实例代码(声明接口,与子类实现方法常用在activity和fragment中,获取adapter和activity中)
1.在fragment中声明接口给主activity实现变化底部按钮

public class NewDataFra extends BaseFrag {

private ShowEdit showdit;//实例化对象

 @Override
public View initView(LayoutInflater inflater) {
    return inflater.inflate(R.layout.otherfra, null);
}
@Override
public void initData(Bundle savedInstanceState) {
    showdit = (ShowEdit) getActivity();

}
 @OnClick({R.id.ll_qb, R.id.ll_zt, R.id.ll_cz, R.id.rl_kpi, R.id.rl_xq,R.id.rl_sx})
public void OnClick(View v) {
    switch (v.getId()) {  

   case R.id.rl_xq:
     showdit.showEdit();
       break;   
 }

/**
     * 抽象接口给mainactivity去实现
     */
    public interface ShowEdit {
        void showEdit();
    }

            }

2.在MainActivity中实现接口并切换底部选中
        public class MainActivity extends BaseActivity implements NewDataFra.ShowEdit{**//实现接口**
        @Override
        public void setLayout() {
            setContentView(R.layout.activity_main);
        }
         @Override
        public void init(Bundle savedInstanceState) {

    }


             **/
             * 实现接口里面的方法显示编辑的fragment
             */
        @Override
        public void showEdit() {
            showFrag(4);//显示编辑fragment
        }

    }   
4.抽象类和接口的区别,抽象类里面可以有具体的方法和抽象方法,而接口里面只能是public abstrat 修饰的抽象方法**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值