知识点
abstract抽象类
描述:关于抽象概念在编程中是最常用的,用来定义业务规则、标准和代码的灵活、高效和可复用的手段之一。
案例:比如登录场景,有帐号与密码、手机验证码、人脸识别登录,这里我们就可以定义一个类,创建一个登录的抽象方法(知识点:类里有抽象方法,该类必须为抽象类)。
代码:
abstract class BaseLogin {
/**
* 帐号与密码登录
*/
abstract fun accountLogin(loginId: String, password: String): Boolean
/**
* 手机验证码登
*/
abstract fun mobileValidataCode(phoneNo: String): Boolean
/**
* 人脸识别登录
*/
abstract fun humanFaceLogin(loginId: String, password: String): Boolean
}
class LoginImpl:BaseLogin() {
override fun accountLogin(loginId: String, password: String):Boolean {
//具体帐号与密码登录逻辑
return true
}
override fun mobileValidataCode(phoneNo: String) :Boolean{
//具体帐号与密码登录逻辑
return true
}
override fun humanFaceLogin(loginId: String, password: String) :Boolean{
//具体帐号与密码登录逻辑
return true
}
}
final不可被继承类的修饰
如String类就是无法被继承,另外kotlin中的类默为final,java则是相反,如代码提示不可被继承
final class MyString {//与 final class MyString 是一样的效果
fun log(tag: String, msg: String) {//firstChar()函数
println("$tag->$msg")
}
}
class OwnString:MyString(){
//This type is final, so it cannot be inherited from
}
enum枚举类
与java使用一致
enum class LoginType{
Account,//帐号密码登录
Face,//人脸登录
Vaildata//手机验证码登录
}
open可继承的类
如final描述,在kotlin中如何需要支持类可被继承需要加上open修饰符
annotation注解类
定义如下,在后面会详细说明注解的应用案例与场景
@Target(AnnotationTarget.FIELD)
annotation class Service(
)
sealed密封类
定义如下,在后面会详细说明注解的应用案例与场景
sealed class Result{}
data 数据类
定义如下,在后面会详细说明注解的应用案例与场景
data class Student(
val name: String,
val no: Int
)