overloading & override 이 느므 헷갈린다
둘다 함수 앞에 붙는 키워드이다보니
한쪽을 의식하면 한쪽을 까먹는 상황이 발생
이 김에 정리해보자
①"과적하다" 라는 의미
② 동일한 범위 내에서
③ 함수의 이름을 재사용하는 것
④ 형태가 다르면 OK (파라미터의 Type)!
func add(_ a: Int, _ b: Int) -> Int {
return a + b
}
func add(_ a: Double, _ b: Double) -> Double {
return a + b
}
비슷한 성격의 함수를 하나의 이름으로 설정해서,
함수 호출시 필요한 형태만을 고려해서 사용할 수 있기 때문에
개발자의 가독성과 편의성이 올라감
↓ ↓ ↓
파라미터의 타입을 고려해서
여러개의 함수를 선언하고 (같은이름으로)
사용할때 골라쓰는 느낌
① "재정의" 한다는 의미
② 상속이 발생할때 생겨나는 개념
③ 상위 클래서에 있는 메서드를 하위 클래스에서 새롭게 구현하는 것을 의미
class Shape {
func draw() {
print("Drawing a shape")
}
}
class Circle: Shape {
override func draw() {
print("Drawing a circle")
}
}
이제 그만헷갈리기 !
class A {
func doSomething(){
print("기본함수")
}
//Overloading
func doSomething(num: Int){
print("No(\(num).기본함수")
}
}
class B:A {
//Override
override func doSomething() {
print("조큼 변형한 함수")
}
}