scala class Student...

53 阅读1分钟

一.class Student

package level02

object class01 {
  //class类

  //Student 构造函数 用来创建对象

  //构造函数:
  // (1)主构造函数
  // (2)辅助构造函数 提供更多的创建对象的方式
  //特点:名字就叫this 它的代码第一行必须是调用主构造器
  class Student(var name:String,var age:Int) {
    println("Student构造函数被调用...")

    //辅助构造函数
    def this (name:String){
      this(name,15)
      println("辅助构造函数被调用...")
    }

    //辅助构造函数
    def this (age:Int){
      this("未知",age)
      println("辅助构造函数被调用...")
    }

    def sayHello():Unit = {
      println(s"我是${name},今年${age}")
    }
  }

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

    val stu1 = new Student("小王")
    stu1.sayHello()

    val stu2 = new Student(20)
    stu2.sayHello()
  }
}

二.private

package level02

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

  class Student(var name:String,var age:Int) {

    //私有属性
    val phoneNum : String = "136xxxxxxxxx"
    //私有方法
    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 class03 {
  //目标 让对象被打印的时候 输出信息更友好一点
  //做法 重写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("小王",18)
    //打印输出一个对象  输出的信息不友好
    //level02.class03$Student@2133c8f8
    //level02.class03$Student@43a25848
    println(stu1)
    println(stu2)
  }
}