[iOS / Swift] 클래스(Class)

2024. 10. 14. 18:33
반응형

Swift는 객체 지향 언어이기 떄문에 클래스의 사용이 필수적임. 또한 클래스의 사용으로 코드는 더 유연해지고 보기쉽게 됨.

클래스(Class)

: Swift에서는 클래스를 정의하여 객체를 만들고 사용할 수 있음. 클래스를 하나 만든다면 클래스에서 생성된 객체인 인스턴스를 만들어 실제 작업에 쓰일 수 있게함. 클래스에 대한 예시코드를 보겠음.

클래스를 선언하기 위해서는 아래 처럼 작성하면 됨.

class '클래스이름' { 
 /* 코드 부분 */
}

위 처럼 클래스를 선언하고 안에 name 변수와 my_name() 이라는 함수를 선언했음.

Swift에서는 클래스 안에 변수를 속성이라고하고 함수는 메서드라고 함. 

클래스 안의 변수 : 속성 (property)
클래스 안의 함수 : 메서드 (method)

 

이렇게 클래스를 선언했으면 사용자가 클래스를 쓸 수 있게 해야함.

let Leedoseo : Name = Name()이 과정이 클래스를 실제로 쓸 수 있도록 인스턴스를 만들어주는 과정임.

정리하자면, 상수 Leedoseo는 Name이라는 클래스 데이터 타입을 가지는 것임.

 

이렇게 인스턴스 생성까지 했다면, 클래스를 사용하기 위한 준비는 끝났음. 클래스 내의 속성이나 메서드에 접근하기 위해서는 .을 사용해야함. Leedoseo.name으로 name속성에 접근하고 Leedoseo.my_name()으로 메서드에 접근을 할 수 있음. 접근을 하면 위 코드처럼 됨.


클래스 상속 (Inheritance)

그러면 클래스를 사용하면 어떤 점이 좋은 것인가? 관계가 있는 함수나 변수를 한 곳에 모아 넣을 수 있다는 장점도 있지만, 프로그램의 재사용을 쉽게 할 수 있다 라는 장점이 생김. 클래스를 복사하여 어디서나 동일한 기능을 사용할 수 있게됨.

위의 클래스를 가져와서 YourName이라는 클래스에 상속을 시켰음. 이때 가져온 Name클래스를 슈퍼클래스라고함.

위 코드처럼 상속이 됐다면 이제 YourName클래스 안에서 Nameㅋ클래스의 변수와 함수를 사용할 수 있음. YourName클래스에는 name변수가 없지만 ourName메서드에서 name변수를 사용하는 것을 확인할 수 있음.

 

모든 변수와 메서드에 접근이 가능하고 출력 또한 된다는 것을 확인할 수 있음.


클래스 초기화 (Initialization)

위에 코드에서 인스턴스를 생성할 때 인수 없이 만들었었는데, 여러 인스턴스를 만들고 내가 원하는 인수들까지 지정해줄 수 있다면 아주 편리해짐. 이때 사용되는 것이 초기화임. 이것은 인스턴스를 만들 떄 자동으로 호출되는 초기화 처리 전용의 메서드임.

위의 Name 클래스를 다시 한번 불러왔음.

이번에는 클래스 안에있는 속성들에게 값을 지정해 주지 않고 init()메소드를 이용하여 초기화를 해봤음.

init 메소드 안의 self는 자기 자신을 가르키는 것 값임. 즉 self.이 붙은 변수들은 클래스 내의 변수라는 것이 되는 것임.

name과 age 변수를 각각 지정해 준 뒤 인스턴스를 생성해보면 name: "song", age: 24 이렇게 인수들을 지정해 줄 수 있음.

song1과 song2의 인수들을 다르게 지정한 후 my_name()메소드를 실행하면 위처럼 나옴.

 

인수를 다르게 지정해보니 두 인스턴스의 메서드들이 각각의 인수에 맞게 출력이 되는 것을 확인할 수 있음. 이렇게 Init메서드를 사용하여 초기화를 한다면 마치 함수를 이용하는 것처럼 다양한 인수를 넣어서 실행할 수 있을 것임.

클래스(Class).playground.zip
0.02MB

반응형

BELATED ARTICLES

more