구조체와 클래스
1 - 1 구조체 선언
구조체 이름은 CamelCase 멤버이름은 cameBack 방식으로 지정
struct Person {
var name : String
var age : Int
}
1 - 2 새로운 구조체 변수 선언
새로운 구조체 변수를 선언하는 방법은 일반 변수와 동일
구조체 멤버의 값을 읽거나 할당하기 전에 반드시 유효한 값으로 초기화 해야한다.
그러므로 선언과 동시에 초기화하거나 멤버를 선언할 때 기본값을 지정
var someone = Person(name : "mary", age: 0)
print(someone.name)
print(someone.age)
someone.name = "John"
someone.age = 3
* 멤버 값 변경하려면 구조체를 var 로 선언 let 으로 선언 시 읽을 수 있지만 변경 시 컴파일러 오류 발생
2 - 1 클래스
클래스는 선언과 구현이 분리되어 있지 않다. Java, C# 와 동일한 방식으로 하나의 파일에서 클래스를 구현
동일한 모듈에 있는 클래스를 자동으로 인식할 수 있으므로 파일을 임포트할 필요가 없다
만일 다른 모듈에 있는 클래스를 사용하려면 해당 모듈을 임포트 하여야 한다.
2 - 2 클래스 선언
클래스는 class 키워드로 선언
class 클래스이름 : 상위 클래스 이름 {
속성목록
메소드 목록
}
* 상위 클래스 이름 생략 가능, 상위 클래스 가 없는 클래스는 다른 클래스의 상위 클래스 역할을 수행하는 기초 클래스가 된다.
class Person {
var name = ""
var age = 0
func say () {
print("Hello \(name)")
}
}
2 - 3 클래스 초기화
클래스는 생성자를 직접 구현하지 않을 경우 파라미터가 없는 기본 생성자를 자동으로 생성한다.
앞에서 구현한 Person 클래스도 생성자를 구현하지 않았기 때문에 기본생성자가 자동으로 생성된다
새로운 Person 인스턴스는 다음과 같은 생성자 문법으로 생성할 수 있다.
let p = Person()
예)
struct Resolution{
var width = 10
var height = 10
}
class Person {
// 구조체를 파라미터로 사용 가능
var name = ""
var age = 0
func say () {
print("Hello \(name)")
}
}
* 인스턴스
인스턴스 = 선언한 클래스나 구조체를 가지고 실제 값을 만드는것
설계도로 만든 건물 = 인스턴스
설계도 = 클래스, 구조체
3. 구조체와 클래스의 차이
구조체 = 복사된 종이
struct Resolution{
var width = 10
var height = 10
}
var someone = Resolution()
var otherSomeone = someone
otherSomeone.height = 20
someone.height // 10
otherSomeone.height //20
* 복사된 종이의 값만 바뀌기 때문에 원본은 바뀌지 않음
클래스 = 별명
별명이 수십 수백개여도 결국 이름은 하나
class Person {
var name = "testname"
var age = 3
}
let someone = Person()
someone.name = "mary"
someone.age = 30
let otherSomeone = someone
otherSomeone.age = 40
someone.age // 40
otherSomeone.age //40
만일 다른 모듈에 있는 클래스를 사용하려면 해당 모듈을 임포트 하여야 한다.
2 - 2 클래스 선언
클래스는 class 키워드로 선언
class 클래스이름 : 상위 클래스 이름 {
속성목록
메소드 목록
}
* 상위 클래스 이름 생략 가능, 상위 클래스 가 없는 클래스는 다른 클래스의 상위 클래스 역할을 수행하는 기초 클래스가 된다.
class Person {
var name = ""
var age = 0
func say () {
print("Hello \(name)")
}
}
2 - 3 클래스 초기화
클래스는 생성자를 직접 구현하지 않을 경우 파라미터가 없는 기본 생성자를 자동으로 생성한다.
앞에서 구현한 Person 클래스도 생성자를 구현하지 않았기 때문에 기본생성자가 자동으로 생성된다
새로운 Person 인스턴스는 다음과 같은 생성자 문법으로 생성할 수 있다.
let p = Person()
예)
struct Resolution{
var width = 10
var height = 10
}
class Person {
// 구조체를 파라미터로 사용 가능
var someone = Resolution()
var age = 0
func say () {
print("Hello \(name)")
}
}
let viewMode = Person()
print (viewMode.name)
print (viewMode.age)
print (viewMode. someone.height) // 10
print (viewMode.name)
print (viewMode.age)
print (viewMode. someone.height) // 10
* 인스턴스
인스턴스 = 선언한 클래스나 구조체를 가지고 실제 값을 만드는것
설계도로 만든 건물 = 인스턴스
설계도 = 클래스, 구조체
3. 구조체와 클래스의 차이
구조체 = 복사된 종이
struct Resolution{
var width = 10
var height = 10
}
var someone = Resolution()
var otherSomeone = someone
otherSomeone.height = 20
someone.height // 10
otherSomeone.height //20
* 복사된 종이의 값만 바뀌기 때문에 원본은 바뀌지 않음
클래스 = 별명
별명이 수십 수백개여도 결국 이름은 하나
class Person {
var name = "testname"
var age = 3
}
let someone = Person()
someone.name = "mary"
someone.age = 30
let otherSomeone = someone
otherSomeone.age = 40
someone.age // 40
otherSomeone.age //40
댓글 없음:
댓글 쓰기