Scala入门02

    xiaoxiao2021-03-25  111

    练习代码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") } }
    转载请注明原文地址: https://ju.6miu.com/read-16856.html

    最新回复(0)