接口和抽象类有什么区别

要理解接口和抽象类的区别,就要先从它们的用法入手,什么时候用接口什么时候用抽象类?

以下是小编对抽象类和接口的总结:

抽象类:在编程语句中用 abstract 修饰的类是抽象类;

接口:以关键字interface定义,缺省定义域为public;

接下来,用他们的一个例子介绍一下就清楚了:


public abstract class Weapon{

           void fire();

           void shoot(String attribute){

           System.out.println("这是一把加了" + attribute + "的枪");

}

}

public abstract class People{

           void run();

           void say(String name);

}

(public) Interface Weapon{

        (public) String fire();

        (public) String shoot();

}

(public)  Interface People{

        (public) void run();

        (public) void say();

}

public class Chinese extends People{

         (public) void run(){

         System.out.println("小明跑回来了");

}

        (public) void say(){

        System.out.println(name+"说话了");

}

}

public class American Implement Weapon,People{

         (public)String  fire(){

         return("森林被烧着了");

}

        (public) String shoot(String attribute){

        return(”这是一把装了“ + attribute +"的手枪");

}

       (public) void run(){

        System.out.println("森林被烧了,所以小明掉头跑了");

}       

       (public) void say(){

        System.out.println("小明大叫救命,小伙伴都惊呆了");

}

}


从上面的例子我们可以看出抽象类里面的方法不一定是抽象方法,也可以是普通的方法,还有其他区别就不一一赘述了,大家自己可以试验一下,我们一般可以将抽象类和接口的区别总结出以下几点:1.类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承

                                            2.抽象类中可以存在非抽象的方法,可接口不能

                                            3.接口中的方法不能直接实现,必须在实现他的类中重写;而抽象类中可以实现部分的方法

                                            4.接口中基本数据类型为static 而抽类象不是

  

抽象类的功能要远超过接口,但是,定义抽象类的代价高。因为高级语言来说(从实际设计上来说也是)每个类只能继承一个类。在这个类中,你必须继承或编写出其所有子类的所有共性。虽然接口在功能上会弱化许多,但是它只是针对一个动作的描述。而且你可以在一个类中同时实现多个接口,在设计阶段会降低难度的。

当关于事物的本质的时候,用抽象类;当关于操作的时候,用接口。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值