scala类

1.scala类和无参方法

scala的类实现和Java很相似:
class MyClass{
  private var num = 0//必须初始化字段
  def addAdd(){
    num += 1
  }
  def getNum() = num
}

在Scala中类并不声明为public,一个scala源文件可以包含多个类,所有这些类都有共有可见性。

//实例化对象并调用方法
val myClass = new MyClass() //或new MyClass

//调用无参方法,可以加圆括号或不加(如果声明方法的时候没有括号,则调用的时候就不能加括号)
myClass.addAdd   //myClass.addAdd()
println(myClass.getNum)   //println(myClass.getNum())

2.带getter和setter的属性

getter方法和setter方法对属性在需要的时候进行获取和更改操作。

scala对每一个字段都提供getter和setter方法。

当然,我们可以自己定义getter和setter方法。

********
如果字段是私有的,则getter和setter方法也就是私有的
如果字段类型是val,则只有getter方法


3.对象私有字段

//如果是同样的对象,即使是私有字段也可以互相访问
class MyClass{
  private var num = 0//必须初始化字段
  def addAdd(){
    num += 1
  }
 
  def isLess(other:MyClass) = num < other.num
 
  def getNum() = num
 
}

通过private[this]修饰符来修饰字段,则该字段就不能再通过某个相同对象访问了。被private[this]修饰的字段称为对象私有字段,scala不会为该字段生成getter和setter方法。

4.辅助构造器

辅助构造器的名称为this;
每一个辅助构造器都必须以一个对先前已经定义的其它辅助构造器或主构造器的调用开始。

//带有两个辅助构造器的例子
class MyClass{
    private var name = ""
    private var age = 0
    
    def this(name:String){
      this()//调用主构造器
      this.name = name
    }
    
    def this(name:String, age:Int){
      this(name)//调用前一个辅助构造器
      this.age = age
      
    }
 
}

//构造对象的方式
val o1 = new MyClass
val o2 = new MyClass("name")
val o3 = new MyClass("name",22)


5.主构造器

在scala中,每一个类都有一个主构造器。一个类如果没有显式地定义主构造器,则会自动地得到一个无参的主构造器。


(1)主构造器的参数直接放置在类名之后;
//val name:String,val age:Int就是主构造器的参数
class MyClass(val name:String,val age:Int){
    ......
}

(2)主构造器会执行主构造器中所有的语句;
(3)如果主构造器的类名后面没有跟参数,则该类具备无参构造器,这样的构造器只是简单地执行类体中所有的语句。
(4)可以在主构造器中使用默认参数来避免过多的使用辅助构造器。
class MyClass(val name:String = "",val age:Int = 0)


6.嵌套类

在scala中,几乎可以在任何语法结构中内嵌任何语法结构。可以在函数中定义函数,在类中定义类。


>>>>>__以上内容摘自:《快学Scala》  [美]Cay S. Horstmann著   电子工业出版社__<<<<<




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值