面向对象

21 阅读2分钟

实例化对象

object base30 {

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

//  1.定义类
  class Person(){}

  class Student() {
//    在类中,定义成员变量
//    val 不可修改
//    var可修改
    var name:String="小花"
    var age:Int=18
  }


  def main(args: Array[String]): Unit = {
//    2.实例化对象
    val p1=new Person()

    val s1=new Student()

//    访问成员变量
    println(s1.name)
//    修改成员变量
    s1.name="小花花"
    println(s1.name)
  }
}

带参数的构造器(构造函数)

object base32 {
//  把功能都封装在class中
//  1.属性
//  2.方法
//  3.辅助构造器
  class Student(var name:String="小花",var age:Int=18) {
  println("Student......被调用了.....")
  //  1.类的属性·变量
    
//  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()
  }
}

根据三角形的三边求面积

object base33 {
//  封装一个三角形类
//  给中学生使用,根据三条边
//  1.求三角形面积
//  2.判断是否是一个三角形
  class Triangle(var a:Double=1.0,var b:Double=1.0,var c:Double=1.0) {
//  println(s"${a} ${c} ${b}")
    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(args: Array[String]): Unit = {
//    print("请输入第一条边")
//    val a=scala.io.StdIn.readDouble()
//    print("请输入第二条边")
//    val b=scala.io.StdIn.readDouble()
//    print("请输入第三条边")
//    val c=scala.io.StdIn.readDouble()

//    val t1=new Triangle(a,b,c)
    val t1=new Triangle(3,4,7)
    println(t1.getArea())

    val t2=new Triangle(3,4,3)
    println(t2.getArea())

//    if (t1.check()){
//      println("能构成三角形")
//    } else {
//      println("不能构成")
//    }
  }
}
object base34 {
//  构造器的默认值
//  必填项:姓名,年龄
//  有默认值的项
//  性别:男
//  民族:汉
  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("小h花",18,"女","回旋")
    s2.say()
  }
}

构造器中的参数的类型

没有val,也没有var的,不是对象的属性。不能使用,语法来访问

object base35 {

  class Student(var name:String, var age:Int, gender:String="男") {
    def say():Unit = {
      println(s"${name}, ${age}, ${gender}")
    }
  }

  def main(args: Array[String]): Unit = {
    var s1=new Student("小明",19)
    s1.say()

  }
}
object base36 {

  class Register(var name:String, var email:String, var pwd:String, var phone:String) {
    println("主构造器被调用")
    def this(phone:String,pwd:String) = {
      this("随机用户xxxx","xxxx@11,com",pwd,phone)
      println("辅助构造器被调用")
    }
    def this(email:String,pwd:String,name:String) = {
      this(name,email,pwd,"13600000000")
      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("13617885586","123456","小明")
    r1.say()
    r2.say()

  }
}