scala总结(1) -- trait, object, class等相关概念

trait:

  Serve as interfaces in Scala, can only have def inside, not val.  但不同于interface的是, trait可以含有具体实现供其他类extend时直接使用

  trait implements:

  class A extends B with C1 with C2...  

  when use extends for trait, no override needs to be written
  when a class extends from multiple trait, if multiple traits have some methods that more than 1 of them overrides, the order of trait matters.

  

  

  Functions can also be defined as trait or object like
  trait Fun1[A, B] {
       def apply(x : A):B
  }
  apply is the default method for the function

object:

object in Scala:
     object XXX {}  will build a natural singleton class. and the methods inside object will always be “static”. *good fit for utility functions’ residence.
 
  How to implement static methods inside a normal class? 
  do:
          class A {
          //some methods
          }
          object A {
             //some static methods
          }
  As long as 2 classes are in one file, they can access each other.


class:
Class in Scala:
default getters and setters, no need to override it unless needed:
     def age = privateAge
     def age_=(newValue: Int) {}
val elements will not have default setters as “val” cannot be changed

use  @BeanProperty to get Java style getXXX and setXX

Constructor:
     primary constructor: directly shown in parameters after the class name
     secondary constructor: called this.  must refer primary one or other secondary constructors, secondary constructor will not be able to call super.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值