scala中的类和对象

26 阅读1分钟

类calss:

(1) 属性也叫成员变量:名词,用来描述事物的外在特征

(2)行为也叫成员方法:动词,表示事物能做什么

!用class来创建类,用new来创建对象

构造函数与辅助构造函数


object scala42 {

  class Student(var name:String) {
    //calss类
    
    def sayHello():Unit = {
      println(s"我是${name}")
    }
  }
  def main (array: Array[String]): Unit = {
    //实例化类的对象 stu
    val stu = new Student("小花")
    //调用对象的方法
    stu.sayHello()
  }
}

package level01
//构造函数
//(1)主构造函数
//(2)辅助构造函数
//    特点:名字就叫this 它的代码的第一行必须是调用主构造器 可以有多个
object scala42 {

  class Student(var name:String,var age:Int) {
    println("Student构造函数被调用")
    //辅助构造函数
    def this(name:String){
      this (name,15)
    }
  }
  def sayHello():Unit = {
    println(s"我是 ${name},今年 ${age}")
  }
  def main (array: Array[String]): Unit = {
    //实例化类的对象 stu
    //new的时候,就会自动调用一次构造函数
    val stu = new Student("小花",18)
    //调用对象的方法
    stu.sayHello()

    val stu1 = new Student("小明")
    stu1.sayHello
  }
}

private

package level02

object scala01 {
  //private: 私人的,私有的
  //private: 修饰之后 它就是私有的 在类的外部无法被访问 只能在类的内部被访问

  class Student(var name:String,var age:Int) {
    //私有属性
    private val phoneNum : String = "158xxxx"
    //私有方法
    private def hobby(): Unit = {
      println(s"我的个人爱好是隐私信息....${phoneNum}")
    }
    
    def sayHello():Unit = {
      println(s"我是${name},今年${age}")
      hobby()//在类的内部,可以访问私有成员
    }
  }

  def main(args: Array[String]): Unit = {
    //实例化类的对象stu
    //new 的时候,就会自动调用一次构造函数
    val stu = new Student("小花",18)
    stu.sayHello()
  }
}

toString

package level02

object scala01 {
  //目标:让对象被打印的时候,输出信息更友好一些
  //做法:重写 toString方法
  //在使用println输出一个对象的时候,它会自动调用toString方法,并输出这个方法的返回值!
  class Student(var name:String,var age:Int){
    override def toString: String = s"Student(${name},${age})"
  }

  def main(args: Array[String]): Unit = {
    
    val stu1 = new Student("小花",18)
    val stu2 = new Student("小明",19)
    //打印输出一个对象,输出的信息不友好
    println(stu1)
    println(stu2)
  }
}