본문 바로가기
내일배움캠프 (스파르타 코딩 클럽) 안드로이드 2기/TIL

[TIL • 20231128] #8 (안드로이드 2기 본캠프)

by 키윤 2023. 11. 28.

 

📖 Today I Learned

🔮 학습 및 노트 정리

  • 알고리즘: 아스키 코드를 응용해서 문제 풀이를 했다. 다른 사람들이 한 풀이에서 StringBuilder() 함수와 iteration을 이용한 람다식 when 문을 사용한 코드를 공부했다. 내가 풀때는 항상 똑같이 for문이랑 if문 만 사용하는데 다양하게 사용하는 시도를 해봐야 할 것 같다.
  • 개인 과제 계산기 lv 1 수행 완료 : https://occhiolism.tistory.com/25
  • 코틀린 문법 강의:

1. 상속: 서로 다른 클래스의 상하 관계를 만들어주는 것. 하위(자식)에 있는 클래스는 상위(부모)가 가지고 있는 함수를 상속(사용)받을 수 있다! 클래스 이름 뒤에 : 부모클래스이름() 을 해줌으로써 자식 클래스를 만들어 줄 수 있다. 상속하는 클래수(부모)는 클래스 앞에 open을 적어줘야함 !

fun main() {
    var bird = Bird("새")
    var chicken = Chicken("닭")
    var sparrow = Sparrow("참새")
    var pigeon = Pigeon("비둘기")

    bird.fly()
    chicken.fly()
    sparrow.fly()
    pigeon.fly()
}

open class Bird(name:String) {
    var name: String = ""

    init {
        // this는 현재 클래스의 상태변수를 의미합니다
        // var name: String = ""
        this.name = name
    }

    fun fly() {
        println("${name} 날아요~")
    }

}

class Chicken(name: String) : Bird(name) {

}

class Sparrow(name: String) : Bird(name) {

}

class Pigeon(name: String) : Bird(name) {

}

> 부모 클래스에서 생성자를 활용하는 경우에는 자식에서도 객체 생성시 전달해줘야한다.!

2. 오버라이딩 Override(over:위로, ride:달리다. 즉 원래 있었던 코드 위로 덮고 그 덮은 코드가 실행된다고 해석 할 수 있다!)
- 부모 클래스의 정보 재설계 (프로퍼티 및 메소드)
- 어차피 재설계하는 거면 왜 오버라이딩 사용할까?
    1. OPP관점에서 클래스들간의 관계를 만들고 코드 전체의 일관성 유지!
    2. 프로그램의 재사용성이 떨어져서 유지보수가 어려워진다. (클래스가 많아질수록 복잡해짐!)
- 사용 방법:
    1. 부모 클래스 안에 있는 함수 앞에 open을 적어줘야한다 (물론 부모 클래스도 open이 있어야 함!)
    2. 그 후에 control/command + O 단축키를 오버라이딩 하고 싶은 자식 클래스 안에서 치면 오버라이딩 할 수 있는 함수 옵션을 볼 수 있다.

    3. 원하는 함수 샐랙 후에 ok를 누르면 super.함수이름() 이 나옴. super은 내부적으로 상속을 받으면 나오는 부모 객체
3. 오버로딩
- 동일한 이름의 메소드를 여러 형태로 만들기 (매개변수의 갯수 또는 매개변수의 자료형이 다르면 동일한 이름으로 메소드를 만들 수 있다!) (반환자료형 상관 무) -> 결국에는 메인 클래스에서 호출했을 때 구분만 되면 이름이 같아도 상관없는거 같음!
4. 인터페이스 :
- 코틀린의 부모 클래스는 1개. 추가적인 기능을 넣고 싶을 때에는 interface 사용!
- 로직이 존재하지 않고 이름만 존재하는 추상 메소드( fun 메소드이름() )라고 한다.
- (추상 메소드 작성한느 습관 가지기 -> 어차피 원하는 클래스에 가져와서 오버라이딩 할거임)
- 원하는 클래스에 가져오기 위해서는 ( class 클래스이름(파라미터이름: 파라미터자료형) : 부모클래스이름(부모클래스파라미터), 인터페이스이름 { ... } ) 형태로 작성

 

💡 알고리즘 - 코틀린 : 프로그래머스 코드 카타

  • 12926 : 

https://occhiolism.tistory.com/24

 

[프로그래머스 • 코틀린] 시저 암호 #12926

#12926 🎄 Question ? https://school.programmers.co.kr/learn/courses/30/lessons/12926 class Solution { fun solution(s: String, n: Int): String { var answer = "" return answer } } 🧩 Thought Process 아스키 코드 응용하기 string을 toInt()로 바

occhiolism.tistory.com

 

🏆 Comments

전에 혼자 앱개발 공부할때 오버라이딩이랑 오버로딩 이해하는데 시간이 걸렸었다. 뭐였는지 조금 까먹고 있다가 다시 배우는데 생각보다 쉽게 이해돼서 황당했다. 인터페이스랑 상속 개념 강의도 수강하니 개념이 정리된 느낌이었다. 한두번 다시 시청해봐야 할거 같긴 하다. 

계산기 과제를 했다. lv1이라 쉬웠지만 람다식을 처음으로 직접 작성한 코드라 매우 뿌듯하고 기분이 좋다.

알고리즘 문제도 직접 풀어서 기분 좋았는데 다른 사람이 작성한 코드 이해하는 데 시간이 상당히 걸린다 :(

아! 새로운 단축키도 배웠다. 상속받는 클래스 안에서 ctrl+shift+O를 누르면 오버라이딩할 수 있는 함수리스트를 확인 할 수 있다.