对象
1. 什么是面向对象?
它是一种编程思想,它是基于面向对象的,强调的是以对象为基础完成各种操作。
2. 面向对象的三大思想特点是什么?
(1) 更符合人们的思考习惯
(2) 把复杂的事情简单化
(3) 把程序员从执行者变成指挥者
3. 面向对象的三大特征是
(1) 封装
(2) 继承
(3) 多态
4. 什么是类class? 类是属性和行为的集合。
(1) 属性也叫成员变量:名词,用来描述事物的外在特征
(2) 行为也叫成员方法:动词,表示事物能做什么
案例:
package Top10
object class1 {
/*
* 伴生类 和 伴生对象
* 1. 类和对象的名字是一样的
* 2. 他们在同一个文件中
* 特定:可以访问对方的私有(private)属性
*/
class Student() {
// private 修饰的属性,在类的外部(在当前class之外)无法访问!
private val name:String = "小花"
}
object Student {
def sayHello(stu:Student):Unit={
println(s"${stu.name}")
}
}
def main(args: Array[String]): Unit = {
val stu1 = new Student()
// stu1.name 是错误的,无法访问
// val stu1 = new Student()
// val stu2 = new Student()
// val stu3 = new Student()
// val stu4 = new Student()
Student.sayHello(stu1)
}
}
什么是单例模式?
就是通过技术手段,让某个类只能有一个对象实例。这样做的好处就节约资源,能更加精准地管理。
package Top10
object class11 {
// 1.让构造函数变成私有的。在外部,就能通过new来创造对象了
class Student() {
// private 修饰的属性,在类的外部(在当前class之外)无法访问!
private val name:String = "小花"
}
object Student {
val instance = new Student() // 伴生对象中,可以访问伴生类的私有成员
def getInstance:Student = {
instance
}
}
def main(args: Array[String]): Unit = {
val stu1 = Student.getInstance
val stu2 = Student.getInstance
println(stu1 == stu2) // true
}
}