๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํด๋ž˜์Šค4

[Java] ์ƒ์†๊ณผ ๋ฉ”์„œ๋“œ ํ™•์žฅ์œผ๋กœ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ ๋†’์ด๊ธฐ ๋ชฉ์ฐจ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐ•๋ ฅํ•œ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” “์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ํ™•์žฅ์„ฑ”์ž…๋‹ˆ๋‹ค.์ด์ „์— ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์žฌํ™œ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ์ฃ .์ด ๊ฐœ๋…์„ ์‹คํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋Œ€ํ‘œ์ ์ธ ๋„๊ตฌ๊ฐ€ ๋ฐ”๋กœ ์ƒ์†(Inheritance) ์ด์ฃ . ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ƒ์†์„ ํ†ตํ•ด ํด๋ž˜์Šค๋ฅผ ํ™•์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ์˜ค๋ฒ„๋กœ๋”ฉ(Overloading)์˜ค๋ฒ„๋กœ๋”ฉ(Overloading)๊ณผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(Overriding)์„ ๋น„๊ตํ•˜๋ฉฐ Java์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์œ ์—ฐํ•˜๊ฒŒ ํ™œ์šฉํ•˜๋Š”์ง€๋ฅผ ํ•จ๊ป˜ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.๐Ÿ”„ ์ƒ์†๊ณผ super ํ‚ค์›Œ๋“œ์ƒ์†(Inheritance)์ด๋ž€?์ƒ์†์€ ๊ธฐ์กด ํด๋ž˜์Šค(๋ถ€๋ชจ)๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค(์ž์‹)๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ๊ทธ๋Œ€๋กœ ๋ฌผ๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ.. 2025. 5. 12.
[Java] ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP) ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ๊ตฌ์กฐ ๋ชฉ์ฐจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ, ๊ทธ์ค‘์—์„œ๋„ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Object-Oriented Programming, OOP)์€ ํ˜„๋Œ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. Java๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.์ฆ‰, ์šฐ๋ฆฌ๊ฐ€ ํ˜„์‹ค ์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ์„ ๊ฐ์ฒด๋กœ ๋ณด๊ณ , ์ด๋ฅผ ์ฝ”๋“œ๋กœ ๋ชจ๋ธ๋งํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด์ฃ . ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‹œ์ž‘์ ์ธ ํด๋ž˜์Šค์™€ ๊ฐ์ฒด, ์ƒ์„ฑ์ž์™€ this ํ‚ค์›Œ๋“œ, ์บก์Аํ™”์™€ ์ ‘๊ทผ ์ œ์–ด์ž๊นŒ์ง€ OOP์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ •๋ฆฌํ•ด ๋ณผ๊ฒŒ์š”!๐Ÿ“ฆ ํด๋ž˜์Šค์™€ ๊ฐ์ฒดํด๋ž˜์Šค(Class)๋ž€?ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์„ค๊ณ„๋„ ๋˜๋Š” ํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ ธ์•ผ ํ•  ์†์„ฑ(ํ•„๋“œ)๊ณผ ๊ธฐ๋Šฅ(๋ฉ”์„œ๋“œ)์„ ์ •์˜ํ•ด ๋†“์€ ํ‹€์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ผ์š”.public class Car { String color; int .. 2025. 5. 11.
[Swift] ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด ํด๋ž˜์Šค VS ๊ตฌ์กฐ์ฒด๊ณตํ†ต์ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํผํ‹ฐ ์ •์˜๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ ์ •์˜ subscript ๋ฌธ๋ฒ•์„ ์ด์šฉํ•ด ํŠน์ • ๊ฐ’์„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” subscript ์ •์˜์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” initializer ์ •์˜๊ธฐ๋ณธ ๊ตฌํ˜„์—์„œ ๊ธฐ๋Šฅ ํ™•์žฅํŠน์ •ํ•œ ์ข…๋ฅ˜์˜ ํ‘œ์ค€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ ์ˆœ์‘(conform)์ฐจ์ด์ (ํด๋ž˜์Šค๋งŒ ๊ฐ€๋Šฅ)์ƒ์† (Inheritance): ํด๋ž˜์Šค์˜ ์—ฌ๋Ÿฌ ์†์„ฑ์„ ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ๋ฌผ๋ ค ์คŒํƒ€์ž… ์บ์ŠคํŒ… (Type casting): ๋Ÿฐํƒ€์ž„์— ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค์˜ ํƒ€์ž…์„ ํ™•์ธ์†Œ๋ฉธ์ž (Deinitializers): ํ• ๋‹น๋œ ์ž์›์„ ํ•ด์ œ(free up) ์‹œํ‚ด์ฐธ์กฐ ์นด์šดํŠธ (Reference counting): ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค์— ํ•˜๋‚˜ ์ด์ƒ์˜ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์ฃผ ๋ชฉ์ ์ด ๊ด€๊ณ„๋œ ๊ฐ„๋‹จํ•œ ๊ฐ’.. 2024. 3. 19.
[Swift] ํด๋ž˜์Šค(Class)์™€ ๊ตฌ์กฐ์ฒด(Struct) ํด๋ž˜์Šค(Class) ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ํด๋ž˜์Šค์—์„œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์ธ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉ ํด๋ž˜์Šค ์•ˆ์˜ ๋ณ€์ˆ˜ ํ”„๋กœํผํ‹ฐ(Property)์™€ ํด๋ž˜์Šค ์•ˆ์˜ ํ•จ์ˆ˜ ๋ฉ”์„œ๋“œ(Method)๋กœ ๊ตฌ์„ฑ class Name { var name = "Hyebin" //ํ”„๋กœํผํ‹ฐ //๋ฉ”์„œ๋“œ func my_name() { print("my name is \(name)") } } //์ธ์Šคํ„ด์Šค ์ƒ์„ฑ let hyebin : Name = Name() print(hyebin.name)// Hyebin hyebin.my_name()// my name is Hyebin hyebin.name = "yoo" hyebin.my_name()// my name is yoo ํด๋ž˜์Šค ์ดˆ๊ธฐํ™” (Initialization).. 2023. 2. 6.
๋ฐ˜์‘ํ˜•