Apple-CS-interview / iOS-CS-interview

7 stars 1 forks source link

instance 메서드와 class 메서드의 차이점을 설명하시오. #10

Open ronick-grammer opened 1 year ago

ronick-grammer commented 1 year ago

Instance 메서드

class 메서드

📝 참고 사이트

Hminchae commented 1 year ago

인스턴스 메서드

클래스 메서드

📝참조

Do-hyun-Kim commented 1 year ago

instance 메서드와 class 메서드의 차이점을 설명하시오.

instance Method 🧐

// MARK: instance Method
struct Language {

    var name: String
    var ide: String

    func getLanguageInfo()  {
        print("현재 사용중인 언어는 : \(self.name) 이며 iDE 툴은 : \(self.ide) 입니다")
    }

    mutating func setLanguageInfo(name: String, ide: String) {
        self.name = name
        self.ide = ide
    }
}

class Method 🥸

class Jenny {

    var name: String
    var age: Int
    var weight: Float
    var gender: Gender

    init(name: String, age: Int, weight: Float, gender: Gender) {
        self.name = name
        self.age = age
        self.weight = weight
        self.gender = gender
    }

    convenience init(name: String, age: Int, weight: Float) {
        self.init(name: name, age: age, weight: weight, gender: .none)
    }

    /// class Method
    class func getJennyInfo(name: String, age: Int, weight: Float) {
        print("제니의 실제 이름은 : \(name)이며, 실제 나이는 : \(age) 이고 몸무게는 : \(weight)")
    }

    static func getJennyType(gender: Gender) {
        print("제니의 성별은 : \(gender)")
    }
}

Jenny.getJennyInfo(name: "김도현", age: 24, weight: 74.2)
Jenny.getJennyType(gender: .male)

var hyun: Jenny = Jenny(name: "김도현", age: 24, weight: 76.1)
print(hyun.gender)

📝 참고 사이트

vichye-1 commented 1 year ago

메서드의 종류

  1. Instance methods
  2. Type methods
    1. static methods(오버라이딩 불가)
    2. class methods(오버라이딩 가능)

Instance methods 와 Class methods의 공통점

Instance methods

class Language {
  let language = "Swift!!"
  static let other = "Python!!"

  func printAll() {
    print(language)
    print(Language.other)
  }
}

let language = Language()
language.printAll()

// Swift!!
// Python!!

Class methods

class Knock {
  let name = "knockknock"
  static let shortName = "knock * 2"

  class func sayHello() {
    print(name) // error: instance member 'name' cannot be used on type 'Knock'
    print(shortName)
  }
}

Knock.sayHello()

인스턴스 메서드, 클래스 메서드 호출 방법 비교

class Language {
  // 인스턴스 메서드
  func type() {
    print("Swift")
  }
  // 클래스 메서드
  class func othertype(){
    print("Python")
  }
}

// 인스턴스 메서드 호출
let language = Language()
language.type()

// 클래스 메서드 호출
Language.othertype()

📝 참고