栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java和Scala中的面向对象思想的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java和Scala中的面向对象思想的区别

Java和Scala中的面向对象思想的区别

Scala 的面向对象思想和Java的面向对象思想和概念是一致的。

封装:

**在Java当中,**先把属性写成私有的,然后给它添加get和set方法,把它封装起来,把属性和方法结合在一起就是封装了

**在Scala当中,**属性底层就已经带有get和set方法了,只是它写出来不是get和set,它是用“ . ”点,的这种方式来给它实现的。如果想要它和Java的那些框架兼容的话,需要有明文的get和set方法,需要给它加注解,@BeanProperty,这就是Scala的封装。(它其实是不推荐明文的封装,因为它底层已经实现了)

继承:

**在Java中,**继承就是子类继承父类的所有的属性和方法,在最开始的版本中Java的接口没有非抽象的使用和方法,不好用。

而Scala那个时候就已经创造出来了,它发现了Java的这个问题,就设计了一个叫做特质,一方面特质既具有接口的特性,又具有抽象类的特性,这样它就可以用时拥有抽象的属性方法和非抽象的属性方法,功能使用起来就方便很多。

**在Scala中,**Scala的继承和Java差不了太多,都是一个父类,多个特质。

Java的继承类似于里面是一层父类的模板,父类的对象就写在里面,外面套一层子类的对象,各写各的互不影响。如果两边有相同的属性的话,也不会有什么影响和冲突。

而Scala里面不是这样子的,Scala里面是在同一个对象里面写代码,类似于跑那个代码,跑那个构造器,集成的时候只继承构造器,跑这个代码的时候,父类的代码先跑一遍,子类的代码再跑一遍,如果名字一样就冲突了,冲突了就要重写了,所以Scala里面重写的范围比较广,即可以重写属性,也可以重写方法。同时Scala里面有val和var,var是不能重写的,变量不能重写。要修改它的值,直接修改就可以了。

多态:

**在Java中的多态,**父类的引用指向子类的实例,当产生多态的时候,属性是没有影响的,属性就是引用指向谁掉谁的属性。而调用方法的时候,它会一层一层地往外找,找到最外层的子类的那个重写的方法来进行一个调用,这就是Java的一个多态。

在Scala中的多态比Java中要进一步拓展了一些,因为在Scala中属性也有多态,再加上它的代码在继承的时候就是写在一起的,所以它的里面既有方法的重写又有属性的重写。在多态的时候就全部使用重写后的了,属性也能重写,也是使用重写后的。方法也能重写,也是使用重写后的方法。在调用的时候,就不会指向父类的那个属性了。这就是Scala的多态。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/346487.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号