1.面向对象
1. 什么是面向对象?
它是一种编程思想,它是基于面向对象的,强调的是以对象为基础完成各种操作。
2. 面向对象的三大思想特点是什么?
(1) 更符合人们的思考习惯
(2) 把复杂的事情简单化
(3) 把程序员从执行者变成指挥者
3. 面向对象的三大特征是
(1) 封装
(2) 继承
(3) 多态
4.什么是类class? 类是属性和行为的集合。
(1) 属性也叫成员变量:名词,用来描述事物的外在特征
(2) 行为也叫成员方法:动词,表示事物能做什么
2.创建类和对象
用class来创建类,用new来创建对象。
//1.定义一个类
//类名:首字母大写
//class 类名(){}
class Student() {
//属性
//定义属性和定义变量一致
var name: String = "小花"
var age: Int = 18
//方法
//定义方法和定义函数一致
def sayHello(): Unit={
println(s"我是${age}岁的${name}")
}
}
def main(args: Array[String]): Unit = {
//2.创建对象 (实例化对象)
//对象名=new类名()
val st1=new Student()
//通过 对象.属性名 来访问属性
println(st1.name)
//通过 对象.方法名() 来调用方法
st1.sayHello()
// val st2=new Student()
// println(st2)
}
构造器
//带参数的构造器(构造函数)
class Student(var name:String="小花",var age:Int=18) {
//方法
//定义方法和定义函数一致
def sayHello(): Unit = {
println(s"我是${age}岁的${name}")
}
}
def main(args: Array[String]): Unit = {
//new Student()
//1.调用构造器,第5行。
//2.没有传入想换的参数,使用默认值。
val st1=new Student()
println(st1.name)
//new Student(“小明”,19)
//1.调用构造器,第5行。
//2.传入相关的参数。
val st2=new Student("小明",19)
println(st2.name)
}
三角形类
class Triangle(a:Double,b:Double,c:Double) {
//计算面积
def getAera():Double= {
if (check()) {
//能否根据三条边长,来计算面积? 海伦公式
var s = (a + b + c) / 2
s = s * (s - a) * (s - b) * (s - c)
return Math.sqrt(s) //Math.sqrt(4)==>2就是开平方操作
} else {
print("不能构成三角形")
return 0;
}
}
//检查是否能够成三角形
def check():Boolean={
//任意两边之和大于第三边
return (a+b) > c && (b+c)>a && (a+c)>b
}
}
def main(args: Array[String]): Unit = {
//Triangle表示一个三角形类。
//Triangle(边长1,边长2,边长3)
val t1 = new Triangle(3,4,5)
println(t1.getAera())//获取面积 6.0
val t2 = new Triangle(4,4,4)
println(t2.getAera())//获取面积 6.928203230275509
}