Open ronick-grammer opened 1 year ago
class
, stuct
, enum
의 인스턴스에 속해 있는 메서드 이다.instance Method
같은 경우 인스턴스를 생성해야 해당 메서드를 사용할 수 있으며 dot
을 통하여 접근 할 수 있다.// 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 overriding
재정의가 가능하다.
class Method
는 타입 그 자체에 바로 접근이 가능한 메서드 이며, 인스턴스를 메모리에 할당하지 않고 타입으로부터 바로 Method
를 직접 호출 할 수 있다.
class Method
선언시에 내부 프로퍼티에는 접근이 불 가능 하다. 접근시 Instance member 'Properties Name' cannot be used on type 'Class Name'
오류가 뜬다.
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)
class Language {
let language = "Swift!!"
static let other = "Python!!"
func printAll() {
print(language)
print(Language.other)
}
}
let language = Language()
language.printAll()
// Swift!!
// Python!!
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()
Instance 메서드
class
,struct
,enum
에서 instance 메서드를 정의할 수 있다.class 메서드
class
에서만 class 메서드를 정의할 수 있고, 오버라이딩이 가능하다는 특징이 있다.📝 참고 사이트