创建类和对象

53 阅读3分钟

Person就是一个类名,理解为变量名。 首字符是大写的 类名一般来说是名词

object class1 {
  class Person{}
  class Student{}
  def main(args: Array[String]): Unit = {
    val p1 = new Person()
    val s1 = new Student()
    println(p1)
    println(s1)
  }

}
object class1 {
  class Person{}
  class Student {
    //在类中,定义成员变量
    //var val 修饰的变量有什么区别?
    //var 不可修改 ; val 可修改
    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)
  }

}
object class1 {
  //把功能都封装在class中
  //1.属性
  //2.方法
  //3.辅助构造器
  class Person{}
  class Student {
  // 1.类的属性-变量
    var name:String = "小花"
    var age:Int = 18
    //2.类的方法-函数
    def say():Unit = {
      println(s"${name},${age}")
    }
  }

  def main(args: Array[String]): Unit = {
   //实例化对象
    val s1 = new Student()

    s1.say()
  }

}
object class1 {
  //把功能都封装在class中
  //1.属性
  //2.方法
  //3.辅助构造器
  class Person{}
  class Student (var name:String = "小花",var age:Int = 18){
    println("Studeng......被调用了......")

    //2.类的方法-函数
    def say():Unit = {
      println(s"${name},${age}")
    }
  }

  def main(args: Array[String]): Unit = {
   //实例化对象
    val s1 = new Student()

    s1.say()
    val s2 = new Student("小明",19)
    s2.say()
  }

}

屏幕截图 2025-09-28 102313.png

object class1 {
  
  class Triangle (var a:Double = 1.0,var b:Double = 1.0,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} ${b} ${c} 不能构成一个三角形")
        return -1
      }
    }
  }

  def main(args: Array[String]): Unit = {
   //实例化对象
    val t1 = new Triangle(3,4,7)
    println(t1.getArea())
    
    val t2 = new Triangle(3,4,3)
    println(t2.getArea())
  }

}

image.png

object class2 {

   class Student (var 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 Base36 { // 学生类,增加了数据验证和封装 class Student( var name: String, var age: Int, var gender: String = "男", var nationality: String = "汉族" ) { // 初始化块,用于数据验证 init { require(name.isNotBlank()) { "姓名不能为空" } require(age in 6..100) { "年龄必须在6到100之间" } require(gender in listOf("男", "女", "保密")) { "性别只能是'男'、'女'或'保密'" } require(nationality.isNotBlank()) { "民族不能为空" } }

    // 打印学生信息
    fun say(): Unit {
        println("姓名: $name, 年龄: $age, 性别: $gender, 民族: $nationality")
    }
    
    // 修改年龄(带验证)
    fun setAge(newAge: Int) {
        require(newAge in 6..100) { "年龄必须在6到100之间" }
        age = newAge
    }
    
    // 检查是否为成年人
    fun isAdult(): Boolean {
        return age >= 18
    }
    
    // 重写toString方法
    override fun toString(): String {
        return "Student(name='$name', age=$age, gender='$gender', nationality='$nationality')"
    }
}

object Base36 { // 学生类,增加了数据验证和封装 class Student( var name: String, var age: Int, var gender: String = "男", var nationality: String = "汉族" ) { // 初始化块,用于数据验证 init { require(name.isNotBlank()) { "姓名不能为空" } require(age in 6..100) { "年龄必须在6到100之间" } require(gender in listOf("男", "女", "保密")) { "性别只能是'男'、'女'或'保密'" } require(nationality.isNotBlank()) { "民族不能为空" } }

    // 打印学生信息
    fun say(): Unit {
        println("姓名: $name, 年龄: $age, 性别: $gender, 民族: $nationality")
    }
    
    // 修改年龄(带验证)
    fun setAge(newAge: Int) {
        require(newAge in 6..100) { "年龄必须在6到100之间" }
        age = newAge
    }
    
    // 检查是否为成年人
    fun isAdult(): Boolean {
        return age >= 18
    }
    
    // 重写toString方法
    override fun toString(): String {
        return "Student(name='$name', age=$age, gender='$gender', nationality='$nationality')"
    }
}

...

fun main(args: Array): Unit { try { // 使用默认性别和民族创建学生 val s1 = Base36.Student("小明", 19) s1.say() println("是否成年: ${if (s1.isAdult()) "是" else "否"}")

    // 自定义所有属性创建学生
    val s2 = Base36.Student("小花", 18, "女", "回族")
    s2.say()
    println("是否成年: ${if (s2.isAdult()) "是" else "否"}")
    
    // 修改年龄示例
    s1.setAge(20)
    println("修改年龄后:")
    s1.say()
    
    // 测试toString方法
    println("\n学生对象信息: $s2")
    
    // 下面的代码会抛出异常,因为数据不符合验证规则
    // val invalidStudent = Base36.Student("", -5, "未知", "")
} catch (e: IllegalArgumentException) {
    println("错误: ${e.message}")
}

}