您的位置:首页 > 其它

抽象类和接口的区别与联系

2015-05-20 14:58 417 查看

抽象类和接口的区别与联系

什么是抽象类
在面向对象的概念中,所有的对象都是用类来描述的,就是说某一个新的对象是通过实例化一个类而来的,但是,并不是所有的类都是用来描述对象的,也就是说并不是所有的类都可以用来实例化,所以说如果一个类并没有足够的信息来描绘一个具体的对象,那这个类就是抽象类。
比如说:一个Dog类,一个Cat类,一个Bird类,他们都有自己的概念,但同时他们又都是Animal这一个抽象的类,Dog、Cat和Bird都可以被实例化,但是Animal,动物这个抽象类是无法具体实例化的。

抽象类的特点
1、抽象类有自己的成员变量,有一个或多个抽象方法,当然也可以有非抽象方法,(抽象类另一个定义可以是:含有抽象方法的类叫做抽象类)。
2、抽象类不能被实例化,但是他有自己的构造器,构造器的作用是在子类在实例化的时候回默认调用父类(抽象类)的构造器,就是初始化的时候有用。
3、抽象类的子类必须为抽象类中的抽象方法提高方法定义,否则,该子类也是抽象类。
补充:Java编程思想中提到,我们也可能创建一个没有任何抽象方法的抽象类。如果有一个类包含任何abstract方法都显得没有实际意义,而且我们也需要阻止产生这个类的任何对象,那么这样做就很有用了。

什么是接口
接口是一个极度抽象的类,它只有方法的声明,没有任何方法的实现,也就是说它只知道应该做什么,至于具体怎么去做它不管。
接口的特点
1、接口中的成员变量默认都static和final类型的,即使省略不写也是这种情况;成员变量在定义的时候必须直接初始化它。
2、接口中的方法默认都是abstract类型的,即使省略不写也是这种情况。
3、接口中的成员变量和成员方法的访问权限都是public类型,即使省略不写也是这种情况。
4、接口是可以继承的,表示接口的继承依然是extends,(接口不能被继承,只能被实现)。
5、一个类可以实现多个接口,多个接口名之间用逗号间隔。

什么时候用接口什么时候用抽象类
自我感觉,抽象类都是从一些相似的对象中抽象出来的一个相对无法具体描述的一个类,它的子类之间是有相似性的;
接口更侧重于对相同的动作进行抽象封装。
当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: