大家好,今天小编关注到一个比较有意思的话题,就是关于java语言双或与单或的区别的问题,于是小编就整理了1个相关介绍Java语言双或与单或的区别的解答,让我们一起看看吧。
JAVA为什么要区分extends和implements?
如果题主是学j***a编程,这样的问题并不好(原因后面解释)。如果是挑战j***a规范,答案就简单了,者就是一种设计。
j***a语言诞生于面向对象编程理论与实践都相对成熟的年代。j***a语言开发者改良了对象多重继承思想,代之以可以扩展(extends)的接口(interface)。接口的缺省条件下是抽象的(aberstract)。
一个类(class)可以实现(implements)0到多个接口,但是只能扩展(extends)一个类。你觉得(implements)和(extends)的语义上有重叠吗?
说这个问题不好的原因是,只有上来就试图通过调试代码来学习j***a语言,才会遇到题主的问题吧?最简单的j***a语法介绍都会说到本文前边的语法特点吧?
我发现,编程语言中的很多东西其实是为了防止学渣挖坑。为了引导学渣少挖坑多铺路,j***a平台推出特殊的抽象类(接口),要求开发者继承(实现)特殊的抽象类(接口)时必须重写所定义的方法。
这个问题涉及到面向对象的三个基本概念(继承,多态,封装)中的继承和多态。请听我慢慢道来。
继承
究其本质继承有两个目的。
- 统一接口使子类可以被重载,这是通过抽象类(Abstract)实现的。在讲到多态的时候,再详细说说接口的应用。
- 由父类保证子类的一致性,这是通过extends实现的。教科书上喜欢用猫狗继承了动物的共性来解释子类继承父类的概念。我倒认为这个说法容易导致混乱。讲一个真实的事例,我需要对同一组数据做两种输出报表,一个是网页而另一个是Excel报,重要的事情是保证这两个报表的数据一致。因此需要把数据部分做成父类,输出部分做成两个子类。可我的程序员只考虑了报表这一共通属性,反其道而行之,做出来的程序Bug无数致使项目一度失控。
多态
多态的目的是实例化时可灵活加载不同的类而无需变更接口。这是面向对象程序语言的一大特色。多态有两种实现方法。
- 定义抽象类通过多个子类的继承实现多态。这个方法的好处是可以保证子类处理的一致性。这一点在上面已经解释过了。这样的重载被限制在单一的父类上,有些不够灵活。
- 定义interface通过多个类的implements实现多态。这个方法可以最大限度地把多态的特性发挥出来。需要注意的是,虽然类的接口相同但处理是完全独立的。
两个实现重载的方法各有利弊,可根据需要灵活运用。
小结
概括起来,extends实现了继承,implements实现了多态,对J***a来说两个语句都很重要,不可或缺。通过运用继承和多态这两个特性,以J***a为代表的面向对象的程序语言可以实现程序架构的继承(抽象工厂模式是个典型的例子),在构建大型系统方面展现了巨大的优势。
对设计模式有兴趣的小伙伴可以提出问题,我有很多故事可以分享哦。
首先先理解这两个关键字,
extends是类继承类 接口继承接口的关键字
implement是类实现接口的关键字
j***a中很重要的一个思想多态就涉及这两个关键字 从多态入手
多态的前提是:
1 继承(实现父接口)
2重写
3向上转型
如果父类是实体类 那么子类就使用extends 继承父类 因为没有抽象方法
如果父类是接口 那么子类就使用implement实现父类 实现父类中的所有抽象方法
到此,以上就是小编对于J***A语言双或与单或的区别的问题就介绍到这了,希望介绍关于J***A语言双或与单或的区别的1点解答对大家有用。