java继承和接口的区别

来源:互联网 发布:所有云计算上市公司 编辑:程序博客网 时间:2024/06/02 03:44

当使用继承的时候,主要是为了不必重新开发,并且在不必了解实现细节的情况下拥有了父类我所需要的特征。

  但是很多时候,一个子类并不需要父类的所有特征,它可能只是需要其中的某些特征,但是由于通过继承,父类所有的特征都有了,需要的和不需要的特征同时具备了。而那些子类实际上不需要用到的,有时候甚至是极力避免使用的特征也可以随便使用,这就是继承的副作用。特别是允许多重继承的java语言中,很容易引起不容易发现的错误。所以在java的语言中,会创造出各种规定来限制子类使用父类中的某些方法。

  就拿你举的例子来说,如果狗的主人只是希望狗能爬比较低的树,但是不希望它继承尾巴可以倒挂在树上,像猴子那样可以飞檐走壁,以免主人管不住它。那么狗的主人肯定不会要一只猴子继承的狗。

  设计模式更多的强调面向接口。猴子有两个接口,一个是爬树,一个是尾巴倒挂。我现在只需要我的狗爬树,但是不要它尾巴倒挂,那么我只要我的狗实现爬树的接口就行了。同时不会带来像继承猴子来带来的尾巴倒挂的副作用。这就是接口的好处。

  java技术发展也有好多年了,一个很明显的趋势就是继承的使用越来越少,而接口的使用越来越广泛了。其实只要稍微比较一下JDK里面那些最早就有的类库和最近才加进去的类库,就可以很明显的感觉到java技术领域的编程风格的变迁,由大量的继承到几乎无处不用的面向接口编程。

  接口不是替代继承。比如说我现在就是要我的动物去爬树,我根本就不需要知道到底是狗去爬树还是猴子。我提取出“能爬树”的动物去爬。这个能爬树的动物既可以是猴子,也可以是狗。这样不是很灵活吗?

  狗(爬树,咬人)

  猴子(爬树,尾巴倒挂)

如果我既要爬树也要咬人,那么我当然可以选狗,也可以创建一个接口(爬树咬人),然后让狗实现(爬树咬人)接口。



实际概念区别:
区别1:
不同的修饰符修饰(interface),(extends)
区别2:
在面向对象编程中可以有多继承!但是只支持接口的多继承,不支持'继承'的多继承哦
而继承在java中具有单根性,子类只能继承一个父类
区别3:
在接口中只能定义全局常量,和抽象方法
而在继承中可以定义属性方法,变量,常量等...
区别4:
某个接口被类实现时,在类中一定要实现接口中的抽象方法
而继承想调用那个方法就调用那个方法,毫无压力


接口是:对功能的描述      继承是:什么是一种什么

始终记者:你可以有多个干爹(接口),但只能有一个亲爹( 继承)

0 0
原创粉丝点击