코틀린은 상속 금지가 기본값임, 클래스 상속해주려면 open 상태로해야함
코틀린에서 서브클래스는 수퍼클래스에 존재하는 속성과 '같은 이름'의 속성을 가질수 없음 (그러나 open해서 오버라이딩 하면 사용가능)
class Dog (name : String, age : Int)
Any임class A //암시적인 Any상속
class B : Any() //명시적인 Any상속
open class Base(p: Int)
class A(p: Int) : Base(p)
class Myview : View {
constructor() : super(1)
constructor(ctx: Int) : this()
constructor(ctx: Int, attrs:Int) : super(ctx, arrts)
}
fun main(){
var a = animal("별이", 5, "개")
var b = Dog("별이",5)
//위에 두개 같음
a.intro()
b.intro()
b.bark()
}
open class animal(var name : String, var age : Int, var type : String){
fun intro(){
println("저는 $name 이고, $age 살 입니다")
}
}
class Dog (name : String, age : Int) : animal(name,age,"개"){ // : animal()이 상속받는다는뜻
fun bark(){
println("왈왈")
}
fun animal(){
}
}
class Cat(name: String, age : Int) : animal(name,age,"고양이"){ //생성자에서 이름과 나이르 받긴함, 클래스 자체 속성으로 만들어주는 var 붙이지않음 일반 패러미터로받는다(var,val을 붙이면 속성으로 선언)
fun meow(){
println("냐옹")
}
}
ex)
any - 인간 - 남자(수염이난다) - 표인수(강의한다)
………………..- 여자(수유한다) - 서윤지(강의를 듣는다)