내배캠 사전캠프/내배캠 사전캠프 TIL

240930 내배캠 사전캠프 TIL

yjuni22 2024. 9. 30. 23:53

클래스와 구조체 공부 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를 붙이는게 더 정확함

 

* 저장속성의 초기화  

저장 프로퍼티 (실제 데이터)

 

인스턴스 초기화 완료 -> 메모리에 정상적으로 인스턴스가 생성

(붕어빵)데이터를 찍어내면  -> 데이터가 생성된다

초기화 = 데이터를 생성하기 위한 필수적인 과정