코틀린
메소드 오버라이딩
확장함수
상속
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//스트링 확장함수테스트
testStringExtension()
var parent = Parent()
parent.sayHello()
var child = Child()
child.sayHello()
var childClass=ChildClass()
childClass.opened()
var whale = Whale()
whale.walk()
whale.move()
var bird = Bird()
bird.walk()
bird.move()
}
//StringExtension테스트하기
fun testStringExtension(){
var original = "Hello"
var added = "Guys~"
Log.d("Extension","added를 더한 값은 ${original.add(added)}입니다")
}
}
//String클레스 plus라는 확장함수 추가하기
//스트링 클레스에 사용자 정의 함수를 추가하는 문법
//원본스트링 클래슨느 변화가 없음
//지금 순간에만 추가가 됨
fun String.add(word:String):String{
// string1+string2
return this+word
}
open class Parent{
var hello:String="안녕하세요."
fun sayHello(){
Log.d("Extension","${hello}")
}
}
class Child:Parent(){
fun myHello(){
hello ="Hello"
sayHello()
}
}
//메소드 오버라이드
open class BaseClass{
open fun opened(){
}
fun notOpend(){
}
}
class ChildClass : BaseClass(){
override fun opened(){
Log.d("Extension","메소드오버라이드")
}
// 부모클레스BaseClass에서 허가open를 안해줌.
// override fun notOpend(){
// }
}
abstract class Animal{
fun walk(){
Log.d("abstract","걷습니다")
}
abstract fun move()
}
class Whale : Animal(){
override fun move() {
Log.d("abstract","바다를 헤엄침")
}
}
class Bird : Animal(){
override fun move() {
Log.d("abstract","날아요")
}
}