Scala中的类和对象

25 阅读2分钟

1. 什么是面向对象?

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

2. 面向对象的三大思想特点是什么?

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

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

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

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

(1) 封装

(2) 继承

(3) 多态

4. 什么是类class? 类是属性行为的集合。

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

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

创建类和对象

在Scala中,用class来创建类,用new来创建对象。

创建一个Person类,并创建它的对象,然后将对象打印到控制台上。

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

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

构造器是一个函数,在new的时候,被自动调用,它的作用是实例化对象。

方法:new Class() 就是在调用构造器,或者叫调用构造函数

练习:

package levelo2

object class01 {

  // class 类
  // student 构造函数,用来创建对象,new 的时候  就会自动调用一次

  // 构造函数:主构造函数,辅助构造函数
  class student(var name:String,var age:Int) {
    println("Student构造函数被调用.....")

    // 辅助构造函数
    def this(name:String)= {
      this(name,15)
      println("辅助构造函数被调用.....")
    }
    // 辅助构造函数2
    def this(age:Int) = {
      this("未知",age)
      println("辅助构造函数被调用....")
    }
    def sayHello():Unit={
      println(s"我是${name},今年${age}")
    }
  }

  def main(args: Array[String]): Unit = {
    val stu = new student("小花", 18)
    stu.sayHello()
    val stu1 = new student("小明")
    stu1.sayHello()
    val stu2 = new student(20)
    stu2.sayHello()
  }
}

结果:

屏幕截图 2025-10-29 152013.png

判断两个对象是否相等

两个对象做比较==时,会自动调用equals方法。我们可以重写equals方法,并自己定义两个对象相等的标准。

重写equals方法的语法格式:

屏幕截图 2025-11-03 083249.png

例题:判断两个对象相等

代码:

object class1 {
  class student(var name:String,var  id:String,var age:Int) {
    // equals  相等
    override def equals(obj: Any): Boolean = {
      println("调用了equals..")
      println(this,obj)
      // 判断this和·obj是否相等的逻辑:姓名和学号都相等,说明两个学生为同样一个人
      val other=obj.asInstanceOf[student]
      this.name==other.name && this.id==other.id
      true
    }
  }

  def main(args: Array[String]): Unit = {
    val stu1= new student("小花","20230012",18)
    val stu2= new student("小花","20230012",18)
    val stu3=new student("小花","20230013",18)
    // 目标:判断他们是一个人。使用==来输出的时候,为true
    println(stu1==stu2)
    println(stu1==stu3)
  }
}

结果:

屏幕截图 2025-11-03 083713.png