一.面向对象
1.面向过程(c) ---> 面向对象(java/scala)
- 过程:步骤
- 对象:模块
- 面向对象的三大思想特点
- 符合人们思考习惯
- 复杂简单化
- 从执行者变成指挥者
- 类scala
-
类是属性和行为的集合
-
(1) 属性也叫成员变量:名词,用来描述事物的外在特征
-
(2) 行为也叫成员方法:动词,表示事物能做什么
[举例]:学生有姓名和年龄这些是属性,学生要学习,要吃饭这些是行为。
4. 面向对象的三大特征是
(1) 封装
(2) 继承
(3) 多态
二.创建类和对象
- Person就是一个类名,理解为变量名
- 首字符为大写
- 类名一般来说是名词
class Person(){} /--定义类
def main(args: Array[String]): Unit = {
val p1 = new Person() /--实例话对象
val s1 = new Person() /--实例话对象
println(p1)
println(s1)
- var与val定义变量的区别
- var 可修改
- val 不可修改
class Student() {
var name:String = "小花"
var age:Int = 12
}
def main(args: Array[String]): Unit = {
val p1 = new Person()
val s1 = new Student()
// 访问成员变量
println(s1.name)
//修改成员变量
s1.name = "小花花"
println(s1.name)
- 把功能都封装在class中
- 1.shuxing
- 2.方法
- 3.辅助构造器
class Person(){}
class Student() {
//1.类的属性--变量
var name:String = "小花"
var age:Int = 12
//2.类的方法--函数
def say(): Unit = {
println(s"${name},${age}")
}
}
def main(args: Array[String]): Unit = {
val s1 = new Student()
s1.say()
class Student(var name:String = "小花",var age:Int = 12 ) {
println("Student.......被调用了......")
//2.类的方法--函数
def say(): Unit = {
println(s"${name},${age}")
}
}
def main(args: Array[String]): Unit = {
val s1 = new Student()
s1.say()
val s2 = new Student("小明",19)
s2.say()
[习题一] 封装一个三角形类
- 求三角形的面积
- 判断是否是一个三角形
class Triangle(var a:Double = 1.0, b:Double = 1.0 , c:Double = 1.0 ) {
//检查是否构成三角形
def check(): Boolean = {
return a+b > c && a+c > b && c+b > a
}
//计算面积
def getArea():Double = {
if(check()){
var s = (a+b+c)/2
s = Math.sqrt( s*(s-a)*(s-b)*(s-c))
s
}else{
println(s"${a} ${b} ${c} 不能构成一个三角形")
-1
}
}
}
def main(args: Array[String]): Unit = {
val t1 = new Triangle(3,4,7)
println(t1.getArea())
val t2 = new Triangle(3,4,3)
println(t2.getArea())
}
}
三.构造器
- 默认值类型
- 必填项:姓名,年龄
- 有默认值的项:性别-男,民族-汉
[习题二] 输出一个人的姓名,年龄,民族,性别
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 = {
var s1= new Student("小明",19)
s1.say()
var s2= new Student("小美",23,"女","回族")
s2.say()
}
- 构造器中的参数类型
- val定义的属性,不能修改
- var定义的属性,可以修改
- 没有val,也没有var的,不是对象的属性,不能使用语法来访问
class Student(var name:String,var age:Int, var gender:String="男") {
def say(): Unit={
println(s"${name},${age},${gender}")
}
}
def main(args: Array[String]): Unit = {
var s1= new Student("小明",19)
s1.age = 23
s1.say()