黑马程序员技术交流社区
标题:
抽象类和接口的区别
[打印本页]
作者:
yangcy
时间:
2014-7-9 20:16
标题:
抽象类和接口的区别
抽象类和接口的区别:
相同点:
1、抽象类和接口中都有抽象方法;
2、抽象类和接口都不能直接创建对象(被实例化),需要实体类继承抽象类或实现接口并实现所有的抽象方法后,才可以创建对象;
不同点:
1、从成员变量上,抽象类可以有任何形式的成员变量,而接口中只能有以static final修饰的成员变量;
2、从方法上,抽象类中既可以有抽象方法,又可以有非抽象方法,而接口中只能有抽象方法;
3、从继承上,一个实体类只能继承一个抽象类,但可以实现多个接口;
作者:
渴望学习
时间:
2014-7-9 20:21
总结的,不错
作者:
yangcy
时间:
2014-7-9 20:24
渴望学习 发表于 2014-7-9 20:21
总结的,不错
我是来拿黑马币的。:)
作者:
lyssenlove
时间:
2014-7-9 22:02
受教了。。
作者:
215041631
时间:
2014-7-9 23:02
另外子类继承父类可以不一定重写父类抽象方法,但是子类也就变成了一个抽象类,而实现接口必须实现所有方法
作者:
itheima-zx
时间:
2014-7-9 23:10
学习了。。
作者:
sk120110
时间:
2014-7-9 23:12
还不错~
作者:
遗失的美好YXJ
时间:
2014-7-9 23:18
抽象类中也可以没有抽象方法
作者:
布鲁图斯
时间:
2014-7-10 00:22
:handshake
作者:
编程学徙
时间:
2014-7-10 04:14
总结得不错啊。。。如果我的技术分够多,我都想给你加点。
作者:
歸羽
时间:
2014-7-10 09:46
恩,总结的很不错。~接口和抽象类的概念很容易混淆。
个人感觉,抽象类是一个类,他具备类的一些特征,如可以单继承,可以有继承体系。但是类中的方法只有方法声明,而没有方法体,这是用abstract来修饰方法和类名,这样构造了抽象类。我们创建类是为了描述一类事物的属性和行为,类就像是图纸。是为了创建对象而存在的。那么使用这些属性和行为一定要创建对象。所以抽象类需要子类并且覆盖抽象类中的所有抽象方法,才可以实例化,否则,该子类还是一个抽线类。当然抽象类可以封装私有属性,但是要对外提供set,get方法。我们也可以在抽象类中定义空参和带参数的构造函数,可以对子类的创建对象的时候初始化。这是我个人理解的抽象类。
接口中的理解就是首先他是功能的扩展,我们说子类继承父类关系时必须要有所属的关系,ls a的时候才可以实现继承的关系。那么我想要获取不同属性事物的功能,怎么办呢?这时候可以用接口来实现。降低了程序的耦合性。假若需要更改错误的时候,只需要单独对一个接口进行修改就可以,而不必连关联的类也修改。是对外暴露的规则。接口是需要实现并且覆盖它的所有抽象方法才可以创建对象,否则实现该接口的类还是抽象类。简单理解就是,接口中的所有方法都是抽象方法。必须被实现接口类全部复写,该类才可以实例化。
另外,要注意的是,接口的修饰符是固定的。即使不写,JVM也会默认使用固定的修饰符。
成员变量 public static final
成员方法 public abstract
这是我个人的一点理解。希望和大家分享一下~
作者:
非5莫属
时间:
2014-7-10 09:52
路过 学习了
作者:
doubandddk
时间:
2014-7-10 12:39
我进来混经验的
作者:
a6511631
时间:
2014-7-10 12:45
总结的还不错
作者:
崔MQ
时间:
2014-7-10 12:54
还有从层次上,继承有层次关系,而实现无层次关系,属于评级的。
作者:
臭豆腐
时间:
2014-7-10 15:33
学习一下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2