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的多态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值