scala-构造器-辅助构造器-伴生对象-单例对象
scala-构造器-辅助构造器-伴生对象-单例对象
一、构造器+辅助构造器
package day02
/**
* 构造器 声明
* +辅助构造器
* 注意:
* 主构造器的参数列表,放在类名的后面,与类名在一起
* val修饰的构造参数具有不可变性。var 修饰的具有可变性。
* faceValue 没有被修饰,默认是val
*
* @param name 姓名 //val 无法赋值
* @param age 年龄 //var 可以赋值
* @param faceValue 颜值 //可以直接进行赋值
*/
class StructDemo (val name:String,var age:Int, faceValue:Int = 90){
def getFaceValue = faceValue
var gender:String = _
//辅助构造器
def this(name:String,age:Int, faceValue:Int,gender:String){
this(name,age,faceValue)
this.gender=gender
}
}
object StructDemo{
def main(args: Array[String]): Unit = {
val sd = new StructDemo("张三",12,90)
println("sd.age: "+sd.age)
println("sd.name: "+sd.name)
// println(sd.faceValue)
println("sd.getFaceValue:"+sd.getFaceValue)
val sd1 = new StructDemo("李四",23,80,"女")
println("sd1.age: "+sd1.age)
println("sd1: "+sd1)
println("sd1.getFaceValue: "+sd1.getFaceValue)
}
}
二、半生对象
package day02
/**
* 伴生对象
* 与类名相同,并且用object修饰的对象:伴生对象。
* 类和伴生对象之间,可以互相访问私有的方法和属性。
*
*/
class Companion {
private var name1 = "小明"
def privatePrint1: Unit ={
println("我是:"+name1+"; 我朋友是 :"+Companion.name2)
}
}
//伴生对象
object Companion{
private var name2 = "小竹笋"
def main(args: Array[String]): Unit = {
val companion1 = new Companion
println("我是小竹笋,我朋友是: "+companion1.name1)
companion1.name1 = "小王"
companion1.privatePrint1
}
}
三、单例对象
package day02
import com.sun.deploy.security.SessionCertStore
import scala.collection.mutable.ArrayBuffer
//单例对象
/**
* 在scala中是没有静态方法和静态字段的,但是可以使用 object关键字+Class类名 语法结构实现同样的功能
* 1,工具类、存放敞亮和工具方法
* 2,实现单例模式
*/
object SingletonDemo {
def main(args: Array[String]): Unit = {
SingletonFactory
println(SingletonFactory.getSession)
SingletonFactory.removeSession
}
}
object SingletonFactory{
//相当于Java中的静态块
println("sessionFactory 已经执行~~ " )
var i = 5;
private val session = new ArrayBuffer[Session]()
while (i>0){
session += new Session
i -= 1
}
// println(session)
def getSession = session
def removeSession: Unit ={
val s = session(0)
session.remove(0)
println("session 已经被移除了~~"+s)
}
}
class Session{}
欢迎订阅关注公众号(JAVA和人工智能)
获取更多免费书籍、资源、视频资料
文章超级链接:
5,IntelliJ IDEA(最新)安装-**详解--亲测可用