(一)面向对象的相关概念
1.它是一种编程思想,它是基于面向对象的,强调的是以对象为基础完成各种操作。
2. 面向对象的三大思想特点
(1) 更符合人们的思考习惯
(2) 把复杂的事情简单化
(3) 把程序员从执行者变成指挥者
3. 类是属性和行为的集合。
(1) 属性也叫成员变量:名词,用来描述事物的外在特征
(2) 行为也叫成员方法:动词,表示事物能做什么
4. 面向对象的三大特征是
(1) 封装
(2) 继承
(3) 多态
(二)创建类和对象
object Base26 {
class Person(){}
class Student(){}
def main(args:Array[String]) = {
val p1 = new Person()
val s1 = new Student()
println(p1)
println(s1)
}
}
(三)定义和访问成员变量
object Base27 {
class Person(){}
class Student() {
var name: String = "小花花"
var age: Int = 18
}
def main(args:Array[String]) = {
val p1 = new Person()
val s1 = new Student()
println(s1.name)
s1.name = "小花花"
println(s1.name)
}
}
(四)定义和访问成员方法
object Base28 {
class Student() {
var name: String = "小花花"
var age: Int = 18
def say(): Unit = {
println(s"${name},${age}")
}
}
def main(args:Array[String]) = {
val s1 = new Student()
s1.say()
}
}
(五)主构造函数
object Base29 {
class Student(var name:String = "小花",var age:Int = 18) {
println("Student...被调用了...")
//类的方法 - 函数
def say(): Unit = {
println(s"${name},${age}")
}
}
def main(args: Array[String]): Unit = {
var s1 = new Student()
s1.say()
var s2 = new Student("小明",19)
s2.say()
}
}
object Base30 {
// 封装一个三角形类
// 给中学生使用,根据三条边
// 1.求三角形的面积
// 2.判断是否为一个三角形
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 = {
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} ${b} ${c} 不能构成一个三角形 ")
return 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(3.4,7)
println(t1.getArea())
val t2 = new Triangle(3,4,3)
println(t2.getArea())
}
}
构造器
object Base31 {
// 构造器的默认值
// 必填项:姓名,年龄
//有默认值的项
// 性别:男
//民族:汉
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 = {
//gender 和 nav 使用默认值
var s1 = new Student("小明",19)
s1.say()
var s2 = new Student("小花",18,"女","回族")
}
}
object Base32 {
//构造器中的参数的类型
class Student(val name:String,var age:Int,gender:String="男") {
def say(): Unit = {
println(s"${name},${age},${gender}")
}
}
def main(args: Array[String]): Unit = {
var s1 = new Student("小明",19)
s1.age = 20
s1.say()
}
}