object hai11 {
class Student() {
//定义一个类
//类名;首字母大写
//class类名(){}
//属性
//定义属性和定义变里一致
var name:String = "小花"
var age:Int = 18
def sayHello():Unit = {
println(s"我是${age} 岁的 ${name}")
}
}
def main(args: Array[String]): Unit = {
//创建对象
//对象名 = new 类名()
val st1 = new Student()
//通过对象属性名 来访问属性
println(st1.name)
//通过对象 方法名 来调用方法
st1.sayHello()
// val st2 = new Student()
// println(st2)
}
}
构造器
object hai12 {
//带参数的构造器(构造函数)
class Student(var name:String = "小花",var age:Int = 18 ) {
//方法
//定义方法和定义函数一样
def sayHello():Unit = {
println(s"我是${age} 岁的 ${name}")
}
}
def main(args: Array[String]): Unit = {
//new student()
//调用构造器第五行
//没有传入相关参数,使用默认值
val st1 = new Student()
//通过对象属性名 来访问属性
println(st1.name)
//new student("小明",19)
//调用构造器 第五行
//传入相关参数
val st2 = new Student("小明",19)
println(st2.name)
}
object hai14 {
//可以在两个地方写参数
//构造器的参数列表
//构造器内部
//构造器参数列表
//1.val 表示不可以被修改的参数
//2.var 表示可以被修改的参数
//3.没有修饰符 不是对象的属性 无法访问
class Triangle(var a:Double,b:Double,c:Double ) {
val d:Int = 1
var e:Int = 2
}
def main(args: Array[String]): Unit = {
val t = new Triangle(1,2,3)
t.a= 2
}
}
object hai15 {
//写多个构造器
//主构造器:一个 就是 class
//辅构造器:多个 名称就是this 在内部
//构造器作用:生产对象
//支持多种创建方式
class User(val phone:String,var pwd:String) {
var email: String = ""
var name: String = ""
//辅构造器
def this(email: String, name: String, pwd: String) {
this("", pwd)
//再对其他的属性赋值
this.name = name
this.email = email
}
//辅构造器
def this(email: String, name: String, pwd: String, phone: String) {
//调用一次主构造器
this(phone, pwd)
//在对其他属性赋值
this.name = name
this.email = email
}
def say():Unit = {
println(s"我的信息如下:")
println(s"姓名:${name}")
println(s" 手机号:${phone}")
println(s" 邮箱:${email}")
println(s" 密码:${pwd}")
}
}
}
object hai13 {
// 面向对象编程的三个特点:封装 继承 多态
class Triangle(a: Double, b: Double, c: Double) {
//计算面积
def getArea(): Double = {
if (check()) {
var s = (a + b + c) / 2
s = s * (s - a) * (s - b) * (s - c)
return Math.sqrt(s)
}else{
print("不能构成三角形")
return 0;
}
}
def check():Boolean = {
return (a + b) > c && (a + c) > b && (b + c) > a
}
}
def main(args: Array[String]): Unit = {
//用Triangle表示一个三角形类
//Triangle(边长1,边长2,边长3)
val t1 = new Triangle(3, 4, 5)
println(t1.getArea()) //获取面积
}
}