클래스와 구조체 공부 2
class Person {
var name = "사람"
}
var p = Person() //x1234
p.name
p.name = "해리"
p.name //해리
var p2 = p //클래스 // x1234 ( 동일한 메모리 주소 복사 = 동일한 데이터 )
// 값을 전달하는 것이 아닌 동일한 주소를 전달 - 동일한 데이터
// "해리" (동일한 데이터) 를 p2에 담음
p2.name = "수진"
p2.name //수진
p.name // p도 똑같이 수진으로 바뀜
struct Animal {
var name = "동물"
}
var a = Animal()
a.name
var a2 = a
a.name = "강아지"
//struct 에서는 a 는 "강아지" a2는 "동물"
구조체가 조금 더 가벼움 ( 스택)
클래스 ( 힙, 메모리주소는 스택영역)
접문법/명시적 멤버 표현식
bBird.fly()
"안녕하세요".count
String().count
문자열도 하나의 구조체
Int.random(in: 1...10)
접문법 하위에 있는 속성(변수)이나 메소드(함수)
관습적으로 속성을 먼저 쓰고 그 다음 함수
ex) sit() 메서드(함수)의 실행문은 정의 영역(클래스 내부)에 올 수 없다. sit() x -> func sit() o
func 안에만 실행문 가능
인스턴스 - 클래스 내 데이터(객체)
실제로 메모리에 할당되어 구체적 실체를 갖춘 것이라는 의미
클래스의 인스턴스는 객체 라고 부른다.
초기화
초기화 매서드 = 생성자 initializer
init(파라미터)
인스턴스를 만들 때 사용하는 특별한 매서드
class Dog {
var name: String
var weight: Double
//생성자 func 대신 init
init(name: String, weight: Double) {
self.name = name //파라미터의 name 와 실제 데이터 (sefl.name = 인스턴스의 name)
self.weight = weight // self.name = n , self.weight = w (파라미터 n , w 로 할 시)
}
}
self 어떤 인스턴스를 의미 , 실제 데이터의 이름을 의미함.
self를 붙이는게 더 정확함
* 저장속성의 초기화
저장 프로퍼티 (실제 데이터)
인스턴스 초기화 완료 -> 메모리에 정상적으로 인스턴스가 생성
(붕어빵)데이터를 찍어내면 -> 데이터가 생성된다
초기화 = 데이터를 생성하기 위한 필수적인 과정
'내배캠 사전캠프 > 내배캠 사전캠프 TIL' 카테고리의 다른 글
241004 내배캠 사전캠프 TIL (0) | 2024.10.04 |
---|---|
241002 내배캠 사전캠프 TIL (0) | 2024.10.02 |
240927 내배캠 사전캠프 TIL (0) | 2024.09.27 |
240926 내배캠 사전캠프 TIL (0) | 2024.09.26 |
240925 내배캠 사전캠프 TIL (0) | 2024.09.25 |