31 阅读2分钟
object hai11 {
  class Student() {
    //定义一个类
    //类名;首字母大写
    //class类名(){}
    //属性
    //定义属性和定义变里一致
    var name:String = "小花"
    var age:Int = 18


    def  sayHello():Unit = {
      println(s"我是${age} 岁的 ${name}")
    }
  }
  def main(args: Array[String]): Unit = {
   //创建对象
    //对象名 = new 类名()
    val  st1 = new Student()
    //通过对象属性名 来访问属性
    println(st1.name)

    //通过对象 方法名 来调用方法
    st1.sayHello()

   // val st2 = new Student()
   // println(st2)

   }


}

构造器

object hai12 {
  //带参数的构造器(构造函数)
  class Student(var name:String = "小花",var age:Int = 18 ) {


   //方法
    //定义方法和定义函数一样


    def  sayHello():Unit = {
      println(s"我是${age} 岁的 ${name}")
    }
  }
  def main(args: Array[String]): Unit = {
   //new student()
    //调用构造器第五行
    //没有传入相关参数,使用默认值
    val  st1 = new Student()
    //通过对象属性名 来访问属性
    println(st1.name)


    //new student("小明",19)
    //调用构造器 第五行
    //传入相关参数

   val st2 = new Student("小明",19)
   println(st2.name)

   }
object hai14 {
  //可以在两个地方写参数
  //构造器的参数列表
  //构造器内部

  //构造器参数列表
  //1.val 表示不可以被修改的参数
  //2.var 表示可以被修改的参数
  //3.没有修饰符 不是对象的属性 无法访问
  class Triangle(var a:Double,b:Double,c:Double ) {
    val d:Int = 1
    var e:Int = 2



  }
  def  main(args: Array[String]): Unit = {
    val t = new Triangle(1,2,3)
    t.a= 2
  }
}
object hai15 {
  //写多个构造器
  //主构造器:一个 就是 class
  //辅构造器:多个 名称就是this 在内部
  //构造器作用:生产对象
  //支持多种创建方式
  class User(val phone:String,var pwd:String) {
    var email: String = ""
    var name: String = ""

    //辅构造器
    def this(email: String, name: String, pwd: String) {
      this("", pwd)
      //再对其他的属性赋值
      this.name = name
      this.email = email

    }

    //辅构造器
    def this(email: String, name: String, pwd: String, phone: String) {
      //调用一次主构造器
      this(phone, pwd)
      //在对其他属性赋值
      this.name = name
      this.email = email
    }
    def say():Unit = {
      println(s"我的信息如下:")
      println(s"姓名:${name}")
      println(s" 手机号:${phone}")
      println(s" 邮箱:${email}")
      println(s" 密码:${pwd}")

    }


  }
}
object hai13 {
  // 面向对象编程的三个特点:封装 继承 多态
  class Triangle(a: Double, b: Double, c: Double) {
    //计算面积
    def getArea(): Double = {
      if (check()) {

        var s = (a + b + c) / 2
        s = s * (s - a) * (s - b) * (s - c)
        return Math.sqrt(s)
      }else{
        print("不能构成三角形")
        return  0;
      }
    }
    def check():Boolean = {
      return (a + b) > c && (a + c) > b && (b + c) > a

  }
}
    def main(args: Array[String]): Unit = {
      //用Triangle表示一个三角形类
      //Triangle(边长1,边长2,边长3)

      val t1 = new Triangle(3, 4, 5)
      println(t1.getArea()) //获取面积
    }
}