黑马程序员技术交流社区
标题:
接口和抽象类的区别
[打印本页]
作者:
love_java
时间:
2013-4-12 16:11
标题:
接口和抽象类的区别
本帖最后由 love_java 于 2013-4-13 09:55 编辑
因为都说那个个java多是面向接口编程,抽象类和接口,我有时候愿意用抽象类,好像是在原理上,多用接口程序的可读性更好一点。。
作者:
何俊森
时间:
2013-4-12 16:14
接口的特点总结:
1、接口是一种规范。为了多态。
2、接口不能被实例化。
3、接口中的成员不能加“访问修饰符”,接口中的成员访问修饰符为public,不能修改。(默认为publci)
4、接口中的成员不能有任何实现(“光说不做”,只是定义了一组未实现的成员)
5、接口中只能有方法、属性、索引器、事件,不能有“字段”。
6、接口中只能与接口之间继承,并且可以多继承。
7、实现接口的子类必须实现该接口的全部成员。
8、一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口IA,那么语法上A必须卸载IA的前面。class MyClass:A,IA{},因为类是单继承。
9、当一个抽象类实现接口的时候,如果不想把接口中的成员实现,可以把该成员实现为abstract。(抽象类也能实现接口,用abstract标记)
10、“显示实现接口”,只能通过接口变量来调用(因为显示实现接口后成员为private)。
抽象类(abstract)特点总结:
1、不能被实例化,需要被继承。多态。
2、子类必须重写父类中的所有的抽象成员,除非:子类也是一个抽象类。
3、抽象成员在父类中不能有任何实现。
4、抽象类中可以有实例成员。
5、抽象成员的访问修饰符不能是private.
6、抽象成员只能写在抽象类中。
作者:
何俊森
时间:
2013-4-12 16:16
接口和抽象类的小结
1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface,同时接口和接口之间可以进行多继承。
2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
7.接口中的方法默认都是 public,abstract 类型的。
作者:
①人←①城市
时间:
2013-4-12 16:18
http://bbs.itheima.com/forum.php ... =%E6%89%AF%E6%B7%A1
已经说的很明白了
作者:
何俊森
时间:
2013-4-12 16:18
http://bbs.itheima.com/search.ph ... D%E8%B1%A1%E7%B1%BB
作者:
李罡
时间:
2013-4-12 16:19
抽象类和接口异同:
相同:
1,都可以在内部定义抽象方法。
2,通常都在顶层。
3,都不可以实例化,都需要子类来实现。
不同点:
1,抽象类中可以定义抽象方法和非抽象方法,
而接口中只能定义抽象方法。
2,接口的出现可以多实现。
抽象类只能单继承。
也就是说:接口的出现避免了单继承的局限性。
3,继承和实现的关系不一致。继承:is a,实现:like a
接口,抽象类,实体类之间的关系:
接口是国王,抽象类是中间管理层,具体类是老百姓。
类中不能有未实现的方法,抽象类中可以存在未实现的方法,接口中只能有未实现的方法
作者:
打工人
时间:
2013-4-12 23:14
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2