안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 구조체와 클래스에 대해 공부하겠습니다.
구조체 : 값 타입입니다.
struct 이름 {
// 구현 코드
}
이름은 첫 글자를 대문자로 시작해줍니다.
struct Altong {
var a : Int = 10 // 가변 프로퍼티
let b : Int = 20 // 불변 프로퍼티
static var c : Int = 30 // 타입 프로퍼티 ( 자바의 스태틱과 같다고 볼 수 있습니다.)
func intanceMethod() {
print("인스턴스 메소드입니다")
}
static func typeMethod() {
print("타입(스태틱) 메소드입니다")
}
}
구조체의 사용
var instanceStruct1 : Altong = Altong() // 가변 인스턴스
let instanceStruct2 : Altong = Altong() // 불변 인스턴스
instanceStruct1 = 11 // 가능
instanceStruct2 = 11 // 불가능(인스턴스 자체가 불변이므로 구조체 안에서 선언된 메소드나, 프로퍼티들도 불변이다)
타입 프로퍼티와 타입 메소드의 사용
Altong.c // 30
Altong.typeMethod() // 타입(스태틱) 메소드입니다
클래스 : 참조 타입입니다.
클래스는 다중 상속이 되지 않습니다.
class 이름 {
// 구현코드
}
class Altong {
var a : Int = 10 // 가변 프로퍼티
let b : Int = 20 // 불변 프로퍼티
static var c : Int = 30 // 타입 프로퍼티 ( 자바의 스태틱과 같다고 볼 수 있습니다.)
func intanceMethod() {
print("인스턴스 메소드입니다")
}
//----- 여기까지는 구조체와 같습니다.
// 클래스에서는 static 함수와 class 함수가 있는데 상속을 받았을 때
class 함수는 재정의가 가능하지만 static 함수는 재정의가 불가합니다.
static func typeMethod() {
print("타입(스태틱) 메소드입니다")
}
class func typeMethod2() {
print("클래스 메소드입니다")
}
}
클래스는 구조체와는 다르게 인스턴스가 가변 (var) 이든지 불변(let) 이든지
가변 인스턴스들의 값을 변경할 수 있습니다.
var altong1 : Altong = Altong() // 가변 인스턴스
let altong2 : Altong = Altong() // 불변 인스턴스
altong1.a = 11 // OK
altong2.a = 11 // OK
이상입니다.
다음 포스팅에서는 열거형에 대해 공부하겠습니다!
'Swift3(스위프트3)' 카테고리의 다른 글
swift3 스위프트3 값 타입과 참조 타입 - Value Type VS Reference Type (0) | 2017.07.05 |
---|---|
swift3 스위프트3 열거형 enum (0) | 2017.07.04 |
swift3 스위프트3 Optional 옵셔널이란? (0) | 2017.07.04 |
swift3 스위프트3 조건문(if... else... else if, switch)과 반복문 (for ... in, while, repeat... while) (0) | 2017.07.04 |
swift3 스위프트3 함수 function 선언과 호출 (0) | 2017.07.04 |