什么是面向对象?
它是一种编程思想,它是基于面向对象的,强调的是以对象为基础完成各种操作。
面向对象的三大特征:
封装
继承
多态
object Base34 {
class Person(){}
class Student(){}
def main(args: Array[String]): Unit = {
val p1 = new Person()
val s1 = new Student()
println(p1)
println(s1)
}
}
运行结果:Base34Student@3ac3fd8b
案例:
-
定义一个Person类,包含姓名和年龄字段
-
创建一个名为小花,年龄为18的对象
-
打印对象的名字和年龄
object Base36 {
class Student() {
var name:String ="小花"
var age:Int = 18
def say(): Unit = {
println(s"${name},${age}")
}
}
def main(args: Array[String]): Unit = {
val s1 = new Student()
s1.say()
}
}
运行结果:
带参数的构造器(构造函数)
object Base36 {
class Student(var name:String ="小花",var age:Int = 18) {
println("Student.......被调用了...")
// var name:String ="小花"
// var age:Int = 18
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()
}
}
运行结果:
Student.......被调用了...
小花,18
Student.......被调用了...
小明,19,18
求三角形的面积
判断是否是一个三角形
object Base37 {
class Triangle(var a:Double = 1.0,var b:Double = 1.0,var c:Double = 1.0) {
// println(s"${a} ${b} ${c}")
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 = {
// print("请输入第一条边")
// val a = scala.io.StdIn.readDouble()
// print("请输入第二条边")
// val b = scala.io.StdIn.readDouble()
// print("请输入第三条边")
// val c = scala.io.StdIn.readDouble()
//
// val t1 = new Triangle(a,b,c)
val t1 = new Triangle(3,4,7)
println( t1.getArea() )
val t2 = new Triangle(3,4,3)
println( t2.getArea() )
// if(t1.check()){
// println("能构成三角形")
// }else {
// println("不能构成三角形")
}
}
结果: