本文最后更新于 2021-08-05 11:42:59
类基础
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| object ObjDemo1 {
def main(args: Array[String]): Unit = { val user = new User println(user.age) println(user.name) user.age=21 println(user.age) user.age_$eq(11) println(user.age) user.eat()
println(user.getAge())
type U = User val u = new U u.eat() println(u.getClass.getName())
} }
class User{
@BeanProperty var age =20 @BeanProperty var name = "king" val contry="china" private var sex = "man"
def eat()={ println(s"$name eat") } }
class User1{
var name:String = _ var age:Int = _ }
class User3(var name:String,val age:Int,sex:String){ def eat={ println(sex) } }
class User4(@BeanProperty var name:String,val age:Int,sex:String){ def this(){ this("aaa",1,"") }
def this(c:Int){ this("aa",c,"") }
def eat={ println(sex) } }
|
导包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| object ObjDemo2 {
def main(args: Array[String]): Unit = { import java.util.HashMap val stringToString = new HashMap[String,String]()
foo } }
class A package aa{ class A }
|
包对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| package priv.king
package object obj {
def foo={ println("foo.......") } }
|

权限修饰符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| object ObjDemo3 { def main(args: Array[String]): Unit = { val hello2 = new Hello2(1)
} }
class Hello private(var age:Int){ private var a=10
}
class Hello2 private[obj](var age:Int){ private[obj] var a=10
}
|
继承于多态
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| object ObjDemo4 {
def main(args: Array[String]): Unit = {
} }
class QQQ(var arg:String){ private var a=1 protected var b=1
val c=222
def name()={ println("1111") }
}
class WWW(var arg1:String) extends QQQ(arg1){ def fun={
println(b)
}
override val c:Int=2
override def name(): Unit ={ super.name() println("2222") } }
|
抽象类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| object ObjDemo5 { def main(args: Array[String]): Unit = {
var aa = new ZZZ(10) { override var b: Int = 1
override def foo(): Int = 1 }
} }
abstract class ZZZ(var a:Int){ var b:Int
def foo():Int }
class XXX extends ZZZ(1){ override var b: Int = _
override def foo(): Int = ??? }
|
object && 伴生类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| object ObjDemo6 { def main(args: Array[String]): Unit = { CCC.fun println(CCC()) } }
object CCC{ def fun=println("111")
def apply(): Int =10
}
class CCC{
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| object ObjDemo7 {
def main(args: Array[String]): Unit = { println(Phone.getPhone("iphone")) println(Phone.getPhone("huawei")) println(Phone.getPhone("google")) println(Phone.getPhone("google"))
}
}
object Phone{
val map=mutable.Map[String,Phone]( "iphone"->new Phone("iphone"), "huawei"->new Phone("huawei") )
def getPhone(brand:String)=map.getOrElseUpdate(brand,new Phone(brand))
}
class Phone private (var brand:String){ println(s"$brand .........")
override def toString:String = s"品牌->$brand"
}
|
Trait
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| object ObjDemo8 {
def main(args: Array[String]): Unit = { val abc = new ABCtrait abc.eat()
val dtrait = new Dtrait with Atrait
} }
trait Atrait { def eat(): Unit ={ println("eat a") } }
trait Btrait extends Atrait { override def eat()={ super[Atrait].eat() println("eat b") } }
trait Ctrait extends Atrait { override def eat()={ super.eat() println("eat c") } }
class Dtrait { def fff()={ println("555555") } }
trait Etrait{ self:Dtrait=> def fun()={ self.fff() } }
class ABCtrait extends Atrait with Btrait with Ctrait {
}
|
类型转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| object ObjDemo9 { def main(args: Array[String]): Unit = { val kkk = new KKK
println(kkk.isInstanceOf[KKK]) println(kkk.isInstanceOf[LLL]) println(kkk.isInstanceOf[Object])
val lll = kkk.asInstanceOf[LLL]
} }
class LLL
class KKK extends LLL
|
枚举
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| object ObjDemo10 { def main(args: Array[String]): Unit = { var o = OOO1 println(OOO1.isInstanceOf[PPP])
println(Season.Spring) println(Season.judge(1)) } }
sealed abstract class PPP
object OOO1 extends PPP
object OOO2 extends PPP
object OOO3 extends PPP
object Season extends Enumeration{ type Season =Value val Spring,Summer,Autumn,Winter =Value
def judge(month:Int)={ if(month>=1 && month<=3) Spring }
}
|
10类基础
https://jiajun.xyz/2020/11/03/scala/10类基础/