Person就是一个类名,理解为变量名。 首字符是大写的 类名一般来说是名词
object class1 {
class Person{}
class Student{}
def main(args: Array[String]): Unit = {
val p1 = new Person()
val s1 = new Student()
println(p1)
println(s1)
}
}
object class1 {
class Person{}
class Student {
//在类中,定义成员变量
//var val 修饰的变量有什么区别?
//var 不可修改 ; val 可修改
var name:String = "小花"
var age:Int = 18
}
def main(args: Array[String]): Unit = {
val p1 = new Person()
val s1 = new Student()
println(s1.name)
s1.name = "小花花"
println(s1.name)
}
}
object class1 {
//把功能都封装在class中
//1.属性
//2.方法
//3.辅助构造器
class Person{}
class Student {
// 1.类的属性-变量
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 class1 {
//把功能都封装在class中
//1.属性
//2.方法
//3.辅助构造器
class Person{}
class Student (var name:String = "小花",var age:Int = 18){
println("Studeng......被调用了......")
//2.类的方法-函数
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 class1 {
class Triangle (var a:Double = 1.0,var b:Double = 1.0,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 = {
//实例化对象
val t1 = new Triangle(3,4,7)
println(t1.getArea())
val t2 = new Triangle(3,4,3)
println(t2.getArea())
}
}
object class2 {
class Student (var name: String, var age: Int, var 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()
}
}
object Base36 { // 学生类,增加了数据验证和封装 class Student( var name: String, var age: Int, var gender: String = "男", var nationality: String = "汉族" ) { // 初始化块,用于数据验证 init { require(name.isNotBlank()) { "姓名不能为空" } require(age in 6..100) { "年龄必须在6到100之间" } require(gender in listOf("男", "女", "保密")) { "性别只能是'男'、'女'或'保密'" } require(nationality.isNotBlank()) { "民族不能为空" } }
// 打印学生信息
fun say(): Unit {
println("姓名: $name, 年龄: $age, 性别: $gender, 民族: $nationality")
}
// 修改年龄(带验证)
fun setAge(newAge: Int) {
require(newAge in 6..100) { "年龄必须在6到100之间" }
age = newAge
}
// 检查是否为成年人
fun isAdult(): Boolean {
return age >= 18
}
// 重写toString方法
override fun toString(): String {
return "Student(name='$name', age=$age, gender='$gender', nationality='$nationality')"
}
}
object Base36 { // 学生类,增加了数据验证和封装 class Student( var name: String, var age: Int, var gender: String = "男", var nationality: String = "汉族" ) { // 初始化块,用于数据验证 init { require(name.isNotBlank()) { "姓名不能为空" } require(age in 6..100) { "年龄必须在6到100之间" } require(gender in listOf("男", "女", "保密")) { "性别只能是'男'、'女'或'保密'" } require(nationality.isNotBlank()) { "民族不能为空" } }
// 打印学生信息
fun say(): Unit {
println("姓名: $name, 年龄: $age, 性别: $gender, 民族: $nationality")
}
// 修改年龄(带验证)
fun setAge(newAge: Int) {
require(newAge in 6..100) { "年龄必须在6到100之间" }
age = newAge
}
// 检查是否为成年人
fun isAdult(): Boolean {
return age >= 18
}
// 重写toString方法
override fun toString(): String {
return "Student(name='$name', age=$age, gender='$gender', nationality='$nationality')"
}
}
...
fun main(args: Array): Unit { try { // 使用默认性别和民族创建学生 val s1 = Base36.Student("小明", 19) s1.say() println("是否成年: ${if (s1.isAdult()) "是" else "否"}")
// 自定义所有属性创建学生
val s2 = Base36.Student("小花", 18, "女", "回族")
s2.say()
println("是否成年: ${if (s2.isAdult()) "是" else "否"}")
// 修改年龄示例
s1.setAge(20)
println("修改年龄后:")
s1.say()
// 测试toString方法
println("\n学生对象信息: $s2")
// 下面的代码会抛出异常,因为数据不符合验证规则
// val invalidStudent = Base36.Student("", -5, "未知", "")
} catch (e: IllegalArgumentException) {
println("错误: ${e.message}")
}
}