Swift3(스위프트3)

swift3 스위프트3 구조체(struct)와 클래스(class)

알통몬_ 2017. 7. 4. 14:31
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 


이번 포스팅에서는 구조체와 클래스에 대해 공부하겠습니다.


구조체 : 값 타입입니다.

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


이상입니다.


다음 포스팅에서는 열거형에 대해 공부하겠습니다!

반응형