Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바네트워크
- NIO
- Java
- android
- 유닉스
- 파이썬
- write by GPT-4
- kotlin
- 인프라
- 웹 크롤링
- oracle
- 역학
- JVM
- GIT
- 코틀린
- 뉴턴역학
- write by chatGPT
- Spring boot
- GPT-4's answer
- Database
- 자바암호
- 리눅스
- 고전역학
- 자바
- 시스템
- flet
- chatGPT's answer
- python
- lombok
- 소프트웨어공학
Archives
- Today
- Total
Akashic Records
상속과 다형성 본문
728x90
객체지향 프로그래밍의 핵심 개념 중 하나는 상속입니다. 상속은 클래스가 다른 클래스의 속성과 메서드를 상속받을 수 있게 해주는 매커니즘입니다. 이렇게 하면 코드의 재사용성을 높이고 중복을 줄일 수 있습니다.
- 상속
Kotlin에서 클래스는 기본적으로 상속이 불가능하도록 설계되어 있습니다. 클래스를 상속 가능하게 만들려면, open
키워드를 사용하여 클래스를 선언해야 합니다.
예제:
open class Animal {
var name: String = ""
fun eat() {
println("$name is eating.")
}
}
class Dog : Animal() {
fun bark() {
println("$name says: Woof!")
}
}
val myDog = Dog()
myDog.name = "Bingo"
myDog.eat() // 출력: Bingo is eating.
myDog.bark() // 출력: Bingo says: Woof!
이 예제에서 Animal
클래스는 open
키워드로 선언되었으며, Dog
클래스는 Animal
클래스를 상속합니다. 따라서 Dog
객체는 Animal
클래스의 eat
메서드를 사용할 수 있습니다.
- 다형성
다형성은 객체지향 프로그래밍의 또 다른 핵심 개념으로, 객체가 여러 타입을 가질 수 있음을 의미합니다. 다형성은 상속과 밀접한 관계가 있습니다.
예제:
open class Animal {
open fun sound() {
println("The animal makes a sound.")
}
}
class Dog : Animal() {
override fun sound() {
println("Woof!")
}
}
class Cat : Animal() {
override fun sound() {
println("Meow!")
}
}
fun makeSound(animal: Animal) {
animal.sound()
}
val myDog = Dog()
val myCat = Cat()
makeSound(myDog) // 출력: Woof!
makeSound(myCat) // 출력: Meow!
이 예제에서 Dog
클래스와 Cat
클래스는 모두 Animal
클래스를 상속받습니다. 각각의 클래스는 sound
메서드를 오버라이드하여 고유의 소리를 출력합니다. makeSound
함수는 Animal
타입의 파라미터를 받아들이지만, 실제로는 Dog
객체나 Cat
객체를 받아들일 수 있습니다. 이는 다형성의 한 예입니다.
상속과 다형성은 코드의 재사용성을 높이고 유연성을 제공하므로, 효율적인 소프트웨어 설계에 중요한 역할을 합니다.
728x90
'Kotlin for Beginners' 카테고리의 다른 글
Null 안정성 (0) | 2023.06.02 |
---|---|
추상화와 캡슐화 (0) | 2023.06.01 |
클래스와 객체 (0) | 2023.06.01 |
프로시저의 이해 (0) | 2023.06.01 |
함수의 파라미터와 반환 값 (0) | 2023.06.01 |
Comments