面向对象编程:
对某种事物进行抽象化,称为"建模"(model),就像是提取生物的基因
一个模型称之为一个类(class),从而简化认知,找到规律
特征和属性
功能行为
集成和多态
快捷定义:class 类名 constructor(属性列表) {更多属性和方法描述}
//构造器: 用来设置类的新实例的配置
创建CityClass类
open class CityClass(var region:String){
//薪水
var avgSalary : Int
get() {
when (this.region){
"sh" -> {
return 4900
}
"ah" -> {
return 3200
}
else -> {
return 3500
}
}
}
set(value){
when(value){
in 4500..Int.MAX_VALUE -> {
this.region = "sh"
}
in 2800..3500 -> {
this.region = "ah"
}
else -> {
this.region = "other region"
}
}
//烹饪
open fun cook(){
val menu = arrayOf("1","2")
val desc = menu.reduce{s1,s2-> s1 + "," + s2}
println("${desc}")
}
}
然后创建子类,继承CityClass类
继承类的特点:可以被继承,但要标记为开放类(可见性修饰符:open)
子类获取父类所有能力,同时可发展多样性
class sh(region: String = "sh") :CityClass(region){
protected var city = "sh"
}
class sc(region:String) : City2(region){
//重写cook方法
override fun cook(){
super.cook()
val menu = arrayOf("The bean curd","Chongqing MAO blood flourishing")
val desc = menu.reduce{s1,s2 -> s1 + "," + s2}
println("我还会${desc}")
}
}
在main方法中实例化类
fun main(args: Array<String>) {
//实例化一个类
val xiaoyaoming = sh(true)
xiaoyaoming.avgSalary = 3000
println(xiaoyaoming.region)
println(xiaoyaoming.region)
//方法覆盖
val xiaoguojingming = sc(
true,"sc"
)
xiaoguojingming.cook()
}
网友评论