Skip to content

Latest commit

ย 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 

README.md

์ ‘๊ทผ ์ œ์–ด(Access Control)

์ ‘๊ทผ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

  • ๋ณธ์ธ์ด ๊ฐ์ถ”๊ณ  ์‹ถ์€ ์ฝ”๋“œ๋ฅผ ๊ฐ์ถœ ์ˆ˜ ์žˆ๋‹ค.
  • ์ฝ”๋“œ์˜ ์˜์—ญ์„ ๋ถ„๋ฆฌ์‹œ์ผœ์„œ, ํšจ์œจ์  ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ปดํŒŒ์ผ ์‹œ๊ฐ„์ด ์ค„์–ด๋“ ๋‹ค. โ†’ (์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ์–ด๋А๋ฒ”์œ„์—์„œ๋งŒ ์“ฐ์ด๋Š”์ง€ ์ธ์ง€๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—)

์Šค์œ„ํ”„ํŠธ์˜ 5๊ฐ€์ง€ ์ ‘๊ทผ ์ˆ˜์ค€

  1. open : ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ๋„ ์ ‘๊ทผ ๊ฐ€๋Šฅ / ์ƒ์† ๋ฐ ์žฌ์ •์˜๋„ ๊ฐ€๋Šฅ
  2. public : ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ๋„ ์ ‘๊ทผ ๊ฐ€๋Šฅ / ์ƒ์† ๋ฐ ์žฌ์ •์˜ ๋ถˆ๊ฐ€
  3. internal : ๊ฐ™์€ ๋ชจ๋“ˆ ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ(default)
  4. fileprivate : ๊ฐ™์€ ํŒŒ์ผ ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  5. private : ๊ฐ™์€ scope๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

๊ธฐ๋ณธ ์›์น™

  • ํƒ€์ž…์€ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜๋‚˜, ํ•จ์ˆ˜๋ณด๋‹ค ๋†’์€ ์ˆ˜์ค€์œผ๋กœ ์ ‘๊ทผ์ œ์–ด๊ฐ€ ์„ ์–ธ๋˜์–ด์•ผ ํ•œ๋‹ค.
 // String ํƒ€์ž…์€ public ์ด๋ฏ€๋กœ open var some ๋ถˆ๊ฐ€
internal var some: String = "์ ‘๊ทผ๊ฐ€๋Šฅ" 

internal func sFunc(a: Int) -> Bool {
	print(a)
	print("hello")
	return true
}

  • ํƒ€์ž…์˜ ์ ‘๊ทผ ์ˆ˜์ค€์ด ๋†’๋‹ค๊ณ  ๋‚ด๋ถ€ ๋ฉค๋ฒ„์˜ ์ ‘๊ทผ ์ˆ˜์ค€์ด ๋ฌด์กฐ๊ฑด ๋†’์•„์ง€๋Š”๊ฑด์•„๋‹ˆ๋‹ค.
open class SomeClass {
	var some = "internal"
}

์œ„ ์ฒ˜๋Ÿผ ๋‚ด๋ถ€ ๋ฉค๋ฒ„๊ฐ€ ๋ช…์‹œ์ ์ธ ์„ ์–ธ์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, internal๋กœ ์œ ์ง€ํ•œ๋‹ค.


๊ด€์Šต์ ์ธ ํŒจํ„ด๊ณผ set, get

  • _๊ฐ€ ๋ถ™์–ด์žˆ๋Š” ํŒจํ„ด
class SomeOtherClass {
	private var _name = "์ด๋ฆ„" // ์“ฐ๊ธฐ - private

	var name: String {
		return _name // ์ฝ๊ธฐ -internal
	}

	func changeName(name: String) {
		self._name = name
	}
}

// Swift์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฌธ๋ฒ•
class SomeAnotherClass {
	private(set) var name = "์ด๋ฆ„" // ์ฝ๊ธฐ - internal / ์“ฐ๊ธฐ - private
}

์ƒ์†, ํ™•์žฅ์˜ ์ ‘๊ทผ์ œ์–ด

  • ์ƒ์†ํ•ด์„œ ๋งŒ๋“  ์„œ๋ธŒํด๋ž˜์Šค๋Š” ์ƒ์œ„ํด๋ž˜์Šค๋ณด๋‹ค ๋” ๋†’์€ ์ ‘๊ทผ ์ˆ˜์ค€์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.
public class A {
	fileprivate func someMethod() {}
}

internal calss B: A {
	override internal func somemethod() {
		super.someMethod()
	}
}

  • ํ™•์žฅ์—์„œ๋Š” ๋ณธ์ฒด์™€ ๋™์ผํ•œ ์ ‘๊ทผ ์ˆ˜์ค€์„ ์œ ์ง€ํ•˜๊ณ , ๋ณธ์ฒด์˜ ๋ฉค๋ฒ„์—๋Š” ๊ธฐ๋ณธ์ ์ธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
public class SomeClass {
	private var somPrivateProperty = "somePrivate"
}

extension SomeClass {
	func somePrivateControlFunction() {
		somePrivateProperty = "์ ‘๊ทผ๊ฐ€๋Šฅ"
	}
}