scala中的类和对象

34 阅读2分钟

创建类和对象

1.使用IDEA创建一个scala项目,并创建object类。

2.设置项目名,包名,项目地址。注意不要使用中文,空格,特殊符号作为名字及路径名。

(1)
object Sc26 {
  class Person(){}

  class Student(){}

  def main(args: Array[String]): Unit = {
    val p1 = new Person()

    val s1 = new Student

    println(p1)
    println(s1)
  }
}
(2)
object Sc26 {
  class Person() {}

  class Student() {
    var name: String = "小华"
    var age: Int = 18
  }

  def main(args: Array[String]): Unit = {
    val p1 = new Person()
    val s1 = new Student()
    println(s1.name)
    s1.name = "小华华"

    println(s1.name)
  }
}

定义和访问成员变量

1.  定义一个Person类,包含姓名和年龄字段

2.  创建一个名为张三,年龄为20的对象

3.  打印对象的名字和年龄

(1)
object Sc27 {
  class Student() {
    var name: String = "小华"
    var age: Int = 18
    def say(): Unit = {
      println(s"${name},${age}")
    }
  }
  def main(arge: Array[String]): Unit = {
    val s1 = new Student()
    s1.say()
  }
}

定义和访问成员方法

object Sc28 {
  class Student(var name:String = "小华", var age:Int = 18) {
   println("Student......被调用...")
    def say(): Unit = {
      println(s"${name},${age}")
    }
  }
  def main(arge: Array[String]): Unit = {
    val s1 = new Student()
    s1.say()
    val s2 = new Student("小明",19)
    s2.say()
  }
}

应用事件

object Sc29 {
  class Triangle(var a: Double = 1.0, var b: Double = 1.0, var c: Double = 1.0) {
    def check(): Boolean = {
      return a + b > c && b + c > a && a + c > b
    }
    def getArea(): Double = {
      if (check()) {
        var s = (a + b + c) / 2
        s = Math.sqrt(s * (s - a) * (s - b) * (s - c))
        return s
      } else {
        println(s"${a} ${c} ${c} 不能构成一个三角形")
        return -1
      }
    }
  }

  def main(arge: Array[String]): Unit = {
    val t1 = new Triangle(3, 4, 7)
    println(t1.getArea())
    val t2 = new Triangle(3, 4, 3)
    println(t2.getArea())
  }
}

构造器的默认值

object Sc30 {
  class Student(var name:String, var age:Int, var gender:String="男", var nav:String="汉族") {
    def say(): Unit = {
      println(s"${name}, ${age}, ${gender}, ${nav}")
    }
  }
  def main(args: Array[String]): Unit = {
      var s1 = new Student("小明", 19)
      s1.say()
    var s2 = new Student("小花", 18, "女", "回族")
    s2.say()
  }
}

构造器中的参数类型

1.val定义属性,不能修改 2.var定义属性,可以修改 3.没有val,也没有var,不是对象的属性,不能使用

object Sc31 {
  class Student(val name:String, var age:Int, var gender:String="男") {
    def say(): Unit = {
      println(s"${name}, ${age}, ${gender}")
    }
  }
  def main(args: Array[String]): Unit = {
      var s1 = new Student("小明", 19)
      s1.age = 20
      s1.say()
  }
}

多种注册用户的方式 ---辅助构造器

object Sc32 {
  class Register(val name: String, var email: String, var pwd: String, var phone: String) {
    println("主构造器被调用")
    def this(phone: String, pwd: String) {
      this("随机用户xxxx", "xxx@qq.com", pwd, phone) // 调用主构造器
      println("辅助构造器被调用")
    }
    def this(email: String, pwd: String, name: String) {
      this(name, email, pwd, "1360000000") // 调用主构造器
      println("辅助构造器被调用")
    }
    def say(): Unit = {
      println(s"姓名: ${name}, 邮箱: ${email}, 密码: ${pwd}, 手机号: ${phone}")
    }
  }
  def main(args: Array[String]): Unit = {
    val r1 = new Register("13617885566", "123456")
    val r2 = new Register("9456651@qq.com", "123456", "小明")
    r1.say()
    r2.say()
  }
}