A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 星痕-凌 中级黑马   /  2015-7-17 21:29  /  1160 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

抽象类与接口
       
        抽象类:
        含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
        接口:
        可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。
       
        下面比较一下两者的语法区别:
        1. 抽象类可以有构造方法,接口中不能有构造方法。
        2. 抽象类中可以有普通成员变量,接口中没有普通成员变量
        3. 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
        4. 抽象类中的抽象方法的访问类型可以是public,protected,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
        5. 抽象类中可以包含静态方法,接口中不能包含静态方法
        6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
        7. 一个类可以实现多个接口,但只能继承一个抽象类。
       

       
        接口和抽象类的概念不一样(通俗的讲)。
       
        接口是对动作的抽象,抽象类是对根源的抽象。

        抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。铁(iron)门、玻璃门这两个类的抽象类是门,说明他们都是门。
       
        人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.

        所以,Java中一个类只能继承一个类(抽象类)(正如男人不可能同时是人和门),但是可以实现多个接口(吃饭接口、走路接口)。
       
        当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。
         
        接口可以实现也可以继承,抽象类不行
        抽象类的功能要远超过接口,但是,定义抽象类的代价高。因为高级语言来说(从实际设计上来说也是)每个类只能继承一个类。在这个类中,你必须继承或编写出其所有子类的
        所有共性。虽然接口在功能上会弱化许多,但是它只是针对一个动作的描述。而且你可以在一个类中同时实现多个接口。在设计阶段会降低难度的。

10 个回复

倒序浏览
非常详细,学习了。
回复 使用道具 举报
非常感谢,一直不知道怎么用,什么时候用接口或者抽象类这下终于回了,太棒了
回复 使用道具 举报
写的真是好,非常感谢
回复 使用道具 举报
受教了谢谢
回复 使用道具 举报
不错,赞一个
回复 使用道具 举报
真的学到东西了
回复 使用道具 举报
非常不错 谢谢
回复 使用道具 举报
非常详细,给力呀。。。。。
回复 使用道具 举报
我去,真心详细啊
回复 使用道具 举报
小p 中级黑马 2015-7-17 23:57:19
11#
看到是看懂就是不知道咋用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马