abstract与interface

参考文章
http://www.bdqn.cn/news/201312/12313.shtml
http://www.cnblogs.com/xiaoao808/archive/2008/03/11/1100886.html

1.两者的区别:
先看两者的定义方式及使用方法:

    public abstract class MyAcstract extends Activity {


    public int t;  //普通数据成员
    abstract void method1();   //抽象方法,抽象类的子类在类中必须实现抽象类中的抽象方法
    public void method4 (){


        //抽象类中可以赋予非抽象方法方法的默认行为,即方法的具体实现

    };



}
public interface MyInterfafce {

     int a=0;//虽然没有static final修饰,但他肯定是隐式的声明为static final的

      void mothod5();//虽然没有abstract修饰,但它肯定是抽象方法

}
public class MainActivity extends MyAcstract implements MyInterfafce{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }


    @Override
    void method1() {

        //abstract class中的抽象方法

    }

    @Override
    public void method4() {
        super.method4();
        //abstract class中的非抽象方法
    }

    @Override
    public void mothod5() {

        //interface class中的抽象方法
    }
}

a. abstract class表示一种继承关系,关键字用extends;interface class表示接口,关键字用implements.
b. 一个类一次只能使用一次继承关系(单继承),即一个类一次只能继承一个abstract class;一个类可以同时实现多个interface class.
c. abstract class可以有abstract数据成员,也可以有非abstarct的成员方法;interface class所有的成员方法都是abstract的,不用abstract修饰;成员变量必须是static final的,不用修饰也会隐式的声明为这样.
d. abstract class:其中的抽象方法不可以有默认行为,非抽象方法可以有默认行为;interface class:其中不可以有非抽象方法,只能有抽象方法,并且不可以有默认行为
f.interface强调特定功能的实现,而abstract class强调所属关系

2.相同点及联系
a.两者都是抽象类,都不能实例化
b.interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。
c.interface可以看做一种特殊的abstract

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值