Scala入门02

  • 练习代码01:
package com.lijie.test

//第一个private表示包可见性在com.lijie下面的包可以访问这个类,其他包不能访问
//第二个private表示私有构造方法,表示只能在伴生对象才能new
//protected也可以修饰表示子类能访问
private[lijie] class Scala01 private {

  //不可以修改
  val a = "10086"

  //可以修改
  var b = 123

  //伴生对象能使用
  private var c: String = "lijie"

  //本类才能使用
  private[this] var d: Int = 10086

  //默认没有值,需要用_或者null表示
  var e:String = _

  //可以使用本类的private[this]属性
  private def fun01 = {
    println(d)
  }

  private[this] def fun02 = {
    println(Scala01.CON)
  }

  //可以访问本类的private[this]方法
  private def fun03 = {
    fun02
  }

  //指定包访问
  private[test] def fun04 = {
    println(d)
  }
}

//伴生对象,一般和类在同一个文件里面,名字和类一样
object Scala01 {

  //伴生对象里面定义的都是常量,并且可以控制包访问权限
  private[lijie] val CON = "lijie"

  def main(args: Array[String]): Unit = {
    val s = new Scala01
//    print(s.a)
//    s.b = 1232
//    s.fun01
//    s.fun04
    s.e
  }
}
  • 练习代码02
package com.lijie.test

//类名后面的是该类的主构造器,如果不写和java一样有个默认的无参构造
//如果写了有参数的构造器,无参数的构造器就不提供,和java一样
//主构造器参数相当于已经定义了两个成员变量了
//前面没有val或者var表示private[this],比如下面的c
//可以定义初始值,如下d默认为10011
//当定义初始值并且用val,表示对象生成了就不能改变这个值,但是可以在new对象的时候构造函数传入其它值
class Scala02(val a: Int, var b: String, c: String,var d:Int = 10011,val e:String = "world") {

}

object Scala02 {
  def main(args: Array[String]): Unit = {
    val obj01 = new Scala02(10086, "lijie","hello",10086,"aaa")

    //如果定义了默认值,new对象可以不传这个默认值
    val obj02 = new Scala02(10086,"lijie","hello")
  }
}
  • 练习代码03
package com.lijie.test

import scala.io.Source

class Scala03 {
  //下面表示主构造器里面的方法---------------------------
  //这是在主构造器,在new的时候会执行,这里在new时候会被初始化
  var a = 10086
  //new的时候被执行
  println(a)
  //上面表示主构造器里面的方法---------------------------

  //这个是成员方法
  def method01(a: Int, b: Int) = {
    a + b
  }
}

object Scala03 {
  def main(args: Array[String]): Unit = {
    val obj01 = new Scala03
  }
}
  • 练习代码04
package com.lijie.test

//object 单例对象
object Scala04 {
  def main(args: Array[String]): Unit = {
    val obj01 = Scala04
    val obj02 = Scala04

    //com.lijie.test.Scala04$@72b6507e
    //com.lijie.test.Scala04$@72b6507e
    println(obj01)
    println(obj02)
  }
}
  • 练习代码05
package com.lijie.test

class Scala05(a: Int) {

}

object Scala05 {

  def apply() = {
    println("执行了apply方法")
  }
  def apply(name: String) = {
    println("执行了apply方法" + name)
  }

  //技巧,使用apply创建对象
  def apply(a: Int) = {
    new Scala05(a)
  }

  def main(args: Array[String]): Unit = {

    //这样会调用object的apply()的方法
    val obj01 = Scala05()

    val obj02 = Scala05("lijie")

    //相当于调用的List或Array的apply的apply方法
    List(1, 2, 3, 4, 5)
    Array(1, 2, 3, 4, 5)

    //可以使用apply方法创建对象,如上面的def apply(a: Int)方法
    val obj03 = Scala05(10086)

    //com.lijie.test.Scala05@66987c7d输出
    println(obj03)
  }

}

练习代码06

package com.lijie.test

//主构造器
class Scala07(val a: Int) {

  var b: String = _

  //辅助构造器
  def this(a: Int, b: String) {

    //必须先调用主构造器
    this(a)
    this.b = b
  }
}

//extends App表示应用程序对象,不用main方法就可以执行
object Scala07 extends App{
  object name extends App {

    //主构造器创建对象
      val obj01 = new Scala07(1)

      //辅助构造器创建对象
    val obj02 = new Scala07(1,"lijie")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值