kotlin 학습 노트 Ⅲ——확장
2889 단어 kotlin
건설자
하위 클래스에는 기본 생성자가 있습니다.
하위 클래스에 기본 생성자가 있는 경우 기본 클래스는 기본 생성자에서 즉시 초기화되어야 합니다.
open class Person(var name : String, var age : Int){// base class
}
class Student(name : String, age : Int, var no : String, var score : Int) : Person(name, age) {
}
// test
fun main(args: Array<String>) {
val s = Student("Runoob", 18, "S12346", 89)
println("name: ${s.name}")
println("age: ${s.age}")
println("number: ${s.no}")
println("scpre: ${s.score}")
}
산출:
name: Runoob
age: 18
number: S12346
score: 89
하위 클래스에는 기본 생성자가 없습니다.
하위 클래스에 기본 생성자가 없으면 기본 클래스는 각 보조 생성자의 super 키워드로 초기화되거나 다른 생성자의 프록시로 초기화되어야 합니다. 기본 클래스를 초기화할 때 기본 클래스의 다른 생성자를 호출할 수 있습니다.
class Student : Person {
constructor(ctx: Context) : super(ctx) {
}
constructor(ctx: Context, attrs: AttributeSet) : super(ctx,attrs) {
}
}
예시
/**base class**/
open class Person(name:String){
/**secondary constructor**/
constructor(name:String,age:Int):this(name){
//initialize
println("------super class secondary constructor-------")
}
}
/**sub-class extends Person class**/
class Student:Person{
/**secondary constructor**/
constructor(name:String,age:Int,no:String,score:Int):super(name,age){
println("-------sub-class secondary constructor---------")
println("name: ${name}")
println("age: ${age}")
println("number: ${no}")
println("score: ${score}")
}
}
fun main(args: Array<String>) {
var s = Student("Rango", 18, "S12345", 89)
}
산출
------super class secondary constructor-------
------sub-class secondary constructor-------
name: Rango
age: 18
number: S12345
score: 89
우세하다
기본 클래스에서 fun을 사용하여 함수를 선언하면 함수는 기본적으로 최종 장식으로 설정되며 하위 클래스에서 재정의할 수 없습니다. 하위 클래스가 함수를 재정의할 수 있는 경우 수동으로 open을 추가하여 장식해야 하며, 하위 클래스 재정의 메서드는 override 키워드를 사용합니다.
예시
/**super class**/
open class Person{
open fun study(){ // allow overridden
println("I am Person Clss")
}
}
/**sbuclass extend Person class**/
class Student : Person() {
override fun study(){ // override function
println("I am student class")
}
}
fun main(args: Array<String>) {
val s = Student()
s.study();
}
산출
I am student class
Reference
이 문제에 관하여(kotlin 학습 노트 Ⅲ——확장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/yuyalei/extend-jnb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
open class Person(var name : String, var age : Int){// base class
}
class Student(name : String, age : Int, var no : String, var score : Int) : Person(name, age) {
}
// test
fun main(args: Array<String>) {
val s = Student("Runoob", 18, "S12346", 89)
println("name: ${s.name}")
println("age: ${s.age}")
println("number: ${s.no}")
println("scpre: ${s.score}")
}
name: Runoob
age: 18
number: S12346
score: 89
class Student : Person {
constructor(ctx: Context) : super(ctx) {
}
constructor(ctx: Context, attrs: AttributeSet) : super(ctx,attrs) {
}
}
/**base class**/
open class Person(name:String){
/**secondary constructor**/
constructor(name:String,age:Int):this(name){
//initialize
println("------super class secondary constructor-------")
}
}
/**sub-class extends Person class**/
class Student:Person{
/**secondary constructor**/
constructor(name:String,age:Int,no:String,score:Int):super(name,age){
println("-------sub-class secondary constructor---------")
println("name: ${name}")
println("age: ${age}")
println("number: ${no}")
println("score: ${score}")
}
}
fun main(args: Array<String>) {
var s = Student("Rango", 18, "S12345", 89)
}
------super class secondary constructor-------
------sub-class secondary constructor-------
name: Rango
age: 18
number: S12345
score: 89
기본 클래스에서 fun을 사용하여 함수를 선언하면 함수는 기본적으로 최종 장식으로 설정되며 하위 클래스에서 재정의할 수 없습니다. 하위 클래스가 함수를 재정의할 수 있는 경우 수동으로 open을 추가하여 장식해야 하며, 하위 클래스 재정의 메서드는 override 키워드를 사용합니다.
예시
/**super class**/
open class Person{
open fun study(){ // allow overridden
println("I am Person Clss")
}
}
/**sbuclass extend Person class**/
class Student : Person() {
override fun study(){ // override function
println("I am student class")
}
}
fun main(args: Array<String>) {
val s = Student()
s.study();
}
산출
I am student class
Reference
이 문제에 관하여(kotlin 학습 노트 Ⅲ——확장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yuyalei/extend-jnb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)