首页 > 编程语言 >Scala学习7之scala与java不同之总结3-特质和接口

Scala学习7之scala与java不同之总结3-特质和接口

时间:2023-01-04 11:01:27浏览次数:56  
标签:特质 java Scala 继承 子类 scala 超类



1.scala和java为了避免出现菱形继承的问题,都只能继承一个类,但都可以继承多个特质(scala)或者接口(java);

java中使用接口interfere,接口里面只能包含抽象方法,不能包含字段,也不能包含具体的方法;

而scala使用的是特质trait,既可以包含抽象方法,也可以包含具体方法;而且在trait中,抽象方法不用abstract声明

,子类继承时也不用override说明。


2.java对于具体方法,需用使用另外一个类来扩展该接口的类,来具体实现该方法,一般成为适配器,比如MouseAdapter;

而scala可以直接使用超类的具体方法和抽象方法


3.scala中继承超类和特质时,超类中的字段还是超类的字段,但是特质的字段变成了子类的字段


4.特质继承从右往左,特质构造继承从左往右,在超类后,子类前进行构造


5.特质与类唯一的差别是特质不能使用构造器参数。但特质需要参数时,继承需要提前定义,不然特质中的继承字段只会发生在匿名子类中

val acct =new{val filename="Myapp.log"} with SavingAccount with FileLogger

因为特质构造在子类之前

或者在特质中使用lazy


6.特质也可以继承类,但是子类再继承的时候会把这个当作超类


7.scala支持闭包:即任何作用域内都可以定义函数,该函数可以获取相对应作用域类的任何变量,函数可以在变量不再处于左右域市被调用,java7不支持


8.柯里化:可以将函数的参数进行拆分,比如接受一个参数返回新的函数


9.scala支持伴生对象object,很方便实现单例,但是java就比较麻烦





标签:特质,java,Scala,继承,子类,scala,超类
From: https://blog.51cto.com/u_13791455/5987199

相关文章

  • Java问题总结之31-成员变量声明
    [修饰符]   类型   变量名;修饰符有:①public。指明变量为公有,即程序中的其他类均可访问此类中的变量。②protected.指明变量为受保护访问。可被同一个......
  • JavaScript学习
    1、书写位置​ 行内式(内嵌式):写在元素内部,一般不常用。a:<ahref="javascript:alert('11');">超链接</a>非a:<buttononclick="alert('11')"></button>​ 内部式:可......
  • 「java技术干货」switch分支结构详解
    前言在上一篇文章中,壹哥给大家介绍了Java里的顺序、分支、循环结构的概念,并且重点给大家讲解了分支结构中的条件分支。并在条件分支中,详细地给大家讲解了if条件分支的使用......
  • JAVA常用PMO
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></d......
  • IntelliJ IDEA 不能识别 Java 项目
    解决办法需要把 src 目录标志为 SourceRoot——在 src 目录上点右键,选择 MarkDirectoryAs -> SourcesRoot:.java文件的图标会发生改变:EDIT在 Projec......
  • javascript【基础】数据类型
    五种基本数据类型NumberStringBooleanUndefined一个没有设置值的变量Null表示一个空对象引用ES6(Symbol)//ES6一种复杂数据类型Object在Java......
  • java 方法的内存理解
    目录方法调用的基本内存原理方法传递基本数据类型的内存原理基本数据类型(四类八种):数据值存储在自己的空间中引用数据类型:存储地址值,真实值在地址指向的空间两种数据类型的......
  • JAVA中使用最广泛的本地缓存?Ehcache的自信从何而来 —— 感受来自Ehcache的强大实力
    大家好,又见面了。本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。作......
  • java 方法入门
    目录方法方法的定义简单方法定义带参数方法定义带返回值方法定义方法使用的注意事项方法的重载方法  方法是程序中最小的执行单元。一个方法中的内容,要么全部执行,要么......
  • Java流程控制
    流程控制用户交互ScannerScanner类可以实现计算机与人的交互。java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入。Scanner类的next()与......