scala中的类和对象

150 阅读2分钟

(一)面向对象的相关概念

1.它是一种编程思想,它是基于面向对象的,强调的是以对象为基础完成各种操作。

2. 面向对象的三大思想特点

(1) 更符合人们的思考习惯

(2) 把复杂的事情简单化

(3) 把程序员从执行者变成指挥者

3. 类是属性行为的集合。

(1) 属性也叫成员变量:名词,用来描述事物的外在特征

(2) 行为也叫成员方法:动词,表示事物能做什么

4. 面向对象的三大特征是

(1) 封装

(2) 继承

(3) 多态

(二)创建类和对象

object Base26 {

  class Person(){}
  class Student(){}

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

  val s1 = new Student()

  println(p1)
  println(s1)

  }
}

(三)定义和访问成员变量

object Base27 {
  class Person(){}
  class Student() {

    var name: String = "小花花"
    var age: Int = 18

}

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

  val s1 = new Student()

  println(s1.name)

  s1.name = "小花花"

  println(s1.name)
  }
}

(四)定义和访问成员方法

object Base28 {
  class Student() {

    var name: String = "小花花"
    var age: Int = 18


    def say(): Unit = {
      println(s"${name},${age}")
    }
  }
def main(args:Array[String]) = {

  val s1 = new Student()

  s1.say()
  }
}

(五)主构造函数

object Base29 {
  class Student(var name:String = "小花",var age:Int = 18) {
    println("Student...被调用了...")

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

  def main(args: Array[String]): Unit = {
    var s1 = new Student()
    s1.say()

    var s2 = new Student("小明",19)
    s2.say()
  }
}
object Base30 {
//  封装一个三角形类
//  给中学生使用,根据三条边
//  1.求三角形的面积
//  2.判断是否为一个三角形
  class Triangle(var a:Double = 1.0, var b :Double = 1.0,var c:Double = 1.0) {
//  println(s"${a} ${b} ${c}")

  def check():Boolean = {
    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 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(3.4,7)
    println(t1.getArea())
    
    val t2 = new Triangle(3,4,3)
    println(t2.getArea())
   
  }
}

构造器

object Base31 {
  // 构造器的默认值
  // 必填项:姓名,年龄
  //有默认值的项
  // 性别:男
  //民族:汉
  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 = {
//gender 和 nav 使用默认值
    var s1 = new Student("小明",19)
    s1.say()

    var s2 = new Student("小花",18,"女","回族")

  }
}
object Base32 {
  //构造器中的参数的类型
  class Student(val 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.age = 20
   s1.say()

  }
}