一.主构造函数的参数 1.用val或 var定义,在类外可以访问 2.不用val|var定义,在类外不可以访问 3.而没有使用val或者var修饰的,不是属性。 ``scala object t28 {
//就是一个类名,理解为变量名 //首字符是大写 //类名一般来说是名词 //1.定义类 class Person(){}
class Student() { //在类中,定义成员变量 var name: String = "小花" var age:Int = 18 } def main(args: Array[String]): Unit = { //2,实例化对象 val p1 = new Person()
val s1 = new Student()
//访问成员变量
println(p1)
//修改成员变量
s1.name = "小花花"
println(s1.name)
} } `` 二:辅助构造函数
object t29 {
//把功能都封装在class中
//1.属性
//2.方法
//3.辅助构造器
class Student() {
//在类中,定义成员变量
var name: String = "小花"
var age:Int = 18
//2.类的方法 -函数
def say():Unit = {
println(s"${name},${age}")
}
}
def main(args: Array[String]): Unit = {
//实例化对象
val s1 = new Student()
s1.say()
}
}
object t30 {
//把功能都封装在class中
//1.属性
//2.方法
//3.辅助构造器
class Student(var name:String="小花",var age:Int = 18) {
println("Student....被调用了....")
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()
}
}
object t31 {
//封装一个三角形类
//输中学生使用,根据三条边。
//1.求三角形的面积
//2..判断是否是一个三角形
class Triangle(var a: Double = 1.0, var b: Double = 1.0, var c: Double = 1.0) {
def check(): Boolean = {
return a + b > c && b + c > a && a + c > b
}
}
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()
var t1 = new Triangle(a, b, c)
if (t1.check()) {
println("能构成三角形")
} else {
println("不能构成三角形")
}
}
}
object t32 {
//封装一个三角形类
//输中学生使用,根据三条边。
//1.求三角形的面积
//2..判断是否是一个三角形
class Triangle(var a: Double = 1.0, var b: Double = 1.0, var c: Double = 1.0) {
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},${b},${c}")
return -1
}
}
}
def main(args: Array[String]): Unit = {
var t1 = new Triangle(3, 4, 7)
println(t1.getArea())
var t2 = new Triangle(3, 4, 3)
println(t2.getArea())
}
}
``scala object t33 { //构造器的默认值 //必填项:姓名,年龄, //有默认值的项 // 性别:男 // 民族:汉 class Student(var name:String,var age:Int, var gender:String="男",var nav:String="") { def say():Unit = { println(s"{age},{nav}") } } def main(args:Array[String]) = { var s0 = new Student()// var s1 = new Student("小明",19)//gender和nav使用默认值 s1.say() var s2 = new Student("小花",18,"女","回族") s2.say() } }
```scala
object t34 {
//构造器中的参数的类型
//1.val定义的属性,不能修改
//2.var定义的属性,可以修改
//3.没有val,也没有var的,不是对象的属性。不能使用,语法来访问。
class Student(var name: String, var age: Int, gender: String = "男") {
def say(): Unit = {
println(s"${name},${age},${gender}")
}
}
def main(args: Array[String]) = {
var s1 = new Student("小明", 19) //gender 和 nav使用默认值
s1.age = 20
s1.say()
}
}
三:案例
object Base35 {
//多种注册用户的方式 ---辅助构造器
//1.手机号 + 密码
//2.邮箱+密码+用户名
//姓名
class Register(val name:String, var email:String,var pwd:String,var phone:String){
println("主构造器被调用")
//辅助构造器
//1.名称一定是this
//2.在辅助构造器内部,一定要调用主构造器this
//3.可以有多个
def this(phone:String,pwd:String){
this("随机用户xxxx","xxx@qq.com",pwd,phone)//调用主构造器
println("辅助构造器被调用")
}
def say():Uint = {
println(s"姓名:${name},邮箱:${email},密码:${pwd},手机号:{phone}")
}
}
def main(args:Array[String]):Uint = {
val r1 = new Register("12654782223","12345")
val r2 = new Register("868385@qq.com","123456","小明")
r1.say()
r2.say()
}
}