面向对象
它是一种编程思想,它是基于面向对象的,强调的是以对象为基础完成各种操作。
面向对象的三大思想特点
(1) 更符合人们的思考习惯
(2) 把复杂的事情简单化
(3) 把程序员从执行者变成指挥者
面向对象的三大特征
(1) 封装
(2) 继承
(3) 多态 封装,隐藏实现细节;继承,不劳而获的幸福;多态:丰富多彩的世界。
类class
(1) 属性也叫成员变量:名词,用来描述事物的外在特征
(2) 行为也叫成员方法:动词,表示事物能做什么
创建类和对象
在Scala中,用class来创建类,用new来创建对象。 创建一个Person类,并创建它的对象,然后将对象打印到控制台上。 1. 使用IDEA创建一个scala项目,并创建object类。
2. 设置项目名,包名,项目地址。注意不要使用中文,空格,特殊符号作为名字及路径名。
object Main {
// 定义类
class Person{ }
def main(args: Array[String]): Unit = {
println("Hello world!")
// 创建对象
val p = new Person()
println(p)
}
}
}
定义和访问成员变量
定义和访问成员变量。
1. var/val 来定义成员变量
2. 对象可以通过对象名.成员变量的方式来访问成员变量
3. 定义一个Person类,包含姓名和年龄字段
4. 创建一个名为张三,年龄为20的对象
5. 打印对象的名字和年龄 步骤
1. 创建一个Object类,添加main方法
2. 创建Person类,添加姓名字段和年龄字段,并对字段进行初始化,让scala自动推断
3. 在main方法中创建Person类对象,设置成员变量为张三,20
4. 打印对象的名字和年龄
object Main {
// 定义类
class Person{
var age: Int = 20
val name: String = "小明"
}
def main(args: Array[String]): Unit = {
println("Hello world!")
// 创建对象
val p = new Person()
println(p.name)
p.age = 21
println(p.age)
}
}
理解构造器
构造器是一个函数,在new的时候,被自动调用,它的作用是实例化对象。
new Class() 就是在调用构造器,或者叫调用构造函数。
object Main {
// 定义类
class Customer() {
println("构造函数被调用")
}
def main(args: Array[String]): Unit = {
val c = new Customer()
}
}
构造函数的参数
object Main {
// 定义类
class Customer(var name:String="小花", var:sex:String="男") {
def sayHello(msg:String ) = {
println("msg:", msg)
}
}
def main(args: Array[String]): Unit = {
val c = new Customer(“小花”,”女”)
c.sayHello("你好 ")
}
}
案例三角形类
1. 求三角形的面积
2. 判断是否是一个三角形.
// 定义类
// 主构造函数
object Base35 {
// 封装一个三角形类
// 给中学生使用,根据三条边。
// 1. 求三角形的面积
// 2. 判断是否是一个三角形.
class Triangle(var a:Double = 1.0,var b:Double = 1.0,var c:Double = 1.0) {
// println(s" ${a} ${c} ${c}")
// 检查是否构成三角形,结果是boolean
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 = {
val t1 = new Triangle(3,4,7) // 6
println( t1.getArea() )
val t2 = new Triangle(3,4,3) // 6
println( t2.getArea() )
}