Swift/기초
Swift 기초 다지기 - 클래스 (Class)
박신혁
2024. 10. 7. 19:29
클래스 (Class)
연관된 데이터(프로퍼티)와 기능(메서드)을 하나의 구조로 묶어 관리할 수 있는 참조 타입
class Person {
//프로퍼티
var name: String
var age: Int
// 초기화 init
init(name: String, age: Int) {
self.name = name
self.age = age
}
// 메서드
func introduce(){
print("안녕하세요, 제 이름은 \(name) 이고, \(age)살 입니다.")
}
}
// 인스턴스 생성 (철수 17세 라는 인스턴스)
let person1 = Person(name: "철수", age: 17)
person1.introduce() // 안녕하세요, 제 이름은 철수 이고, 17살 입니다.
class 키워드로 선언, init으로 기본값을 설정 할 수 있다.
프로퍼티 - 클래스 내에서 정의된 변수나 상수
메서드 - 클래스 내에서 정의된 함수
참조 타입
같은 인스턴스를 여러 변수 또는 상수가 참조 할 수 있으며, 한 곳에서 값을 변경하면 그 변경 사항이 다른 곳에서도 반영됨
// 인스턴스 생성
let person1 = Person(name: "철수", age: 17)
person1.introduce() // 안녕하세요, 제 이름은 철수 이고, 17살 입니다.
let person2 = person1
person2.name = "영희"
person2.introduce() // 안녕하세요, 제 이름은 영희 이고, 17살 입니다.
person1.introduce() // 안녕하세요, 제 이름은 영희 이고, 17살 입니다.
person1 과 person2가 같은 인스턴스를 참조 하고 있어
person2의 name을 "영희" 로 변경하니 person1의 name도 "영희"로 반영된걸 확인 할 수 있다.
값타입인 구조체 와의 가장 큰 차이
상속
부모 클래스의 프로퍼티, 메서드 등을 몰려 받아 사용 할 수 있다, (코드 재사용)
// Person을 상속 받은 Job 클래스
class Job: Person {
var job: String
init(name: String, age: Int, job: String){
self.job = job
super.init(name: name, age: age)
}
override func introduce() {
print("제 이름은 \(name) 이고, \(age)살 입니다, 직업은 \(job)입니다.")
}
}
let newPerson = Job(name: "길동", age: 15, job: "도둑")
newPerson.introduce() // 제 이름은 길동 이고, 15살 입니다, 직업은 도둑입니다.
super 부모 클래스 프로퍼티, 메서드 접근할때 사용
override 부모 클래스 프로퍼티, 메서드 재정의 할때 사용
728x90