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()
}
}
结果:
判断两个对象是否相等
两个对象做比较==时,会自动调用equals方法。我们可以重写equals方法,并自己定义两个对象相等的标准。
重写equals方法的语法格式:
例题:判断两个对象相等
代码:
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)
}
}
结果: