๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

 

 

 

์ถ”์ƒ ํด๋ž˜์Šค (Absract Class)

๊ตฌํ˜„๋ถ€๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ธ์Šคํ„ด์Šค๋Š” ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค.

์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๊ตฌํ˜„๋ถ€๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ตฌํ˜„๋ถ€๋ฅผ ๊ฐ€์งˆ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ํด๋ž˜์Šค์™€ ๋‹ฌ๋ฆฌ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์€ ํ•  ์ˆ˜ ์—†๋‹ค.

ํ•˜์ง€๋งŒ ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›์€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋Š” ์ƒ์„ฑ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์—…์บ์ŠคํŒ… ๋˜ํ•œ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์ถ”์ƒ ํด๋ž˜์Šค ์„ ์–ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด absract ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ์–ธํ•œ๋‹ค.

abstract class ํด๋ž˜์Šค์ด๋ฆ„
{
    // ํด๋ž˜์Šค์™€ ๋™์ผํ•˜๊ฒŒ ๊ตฌํ˜„
}

 

์ ‘๊ทผ์„ฑ ์ธก๋ฉด์—์„œ ๋ณธ๋‹ค๋ฉด, ํด๋ž˜์Šค์™€ ๋” ๊ฐ€๊น๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๊ฐ€ public์œผ๋กœ ์„ ์–ธ๋˜๋Š” ๋ฐ˜๋ฉด, ํด๋ž˜์Šค๋Š” ํ•œ์ •์ž๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๊ฐ€ private์œผ๋กœ ์„ ์–ธ๋œ๋‹ค.

 

 

์ถ”์ƒ ๋ฉ”์†Œ๋“œ(Abstract Method)๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

abstract class AbstractClass
{
    public abstract void AbstractMethod();    // ์ถ”์ƒ ๋ฉ”์†Œ๋“œ
}


class DerivedClass : AbstractClass
{
    public override void AbstractMethod()     // ์ถ”์ƒ ๋ฉ”์†Œ๋“œ ๊ตฌํ˜„ ๊ฐ•์ œ
    {
        ...
    }
}

 

์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์žฅ์น˜์ด๋‹ค.

๊ตฌํ˜„์„ ๊ฐ–์ง€๋Š” ๋ชปํ•˜์ง€๋งŒ, ์ž์‹ ํด๋ž˜์Šค์—์„œ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•˜๋„๋ก ๊ฐ•์ œํ•œ๋‹ค.

์ž์‹ ํด๋ž˜์Šค๋“ค์€ ๋ฐ˜๋“œ์‹œ ์ด ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋“ค์„ ๊ฐ€์ง€๊ณ  ๊ตฌํ˜„ํ•ด๋†จ์„ ๊ฑฐ๋ผ๋Š” ์ผ์ข…์˜ ์•ฝ์†์ธ ์…ˆ์ด๋‹ค.

 

 

์ถ”์ƒ ๋ฉ”์†Œ๋“œ์˜ ๊ธฐ๋ณธ ์ ‘๊ทผ์„ฑ์€ ๋ฌด์—‡์ผ๊นŒ?

abstract class AbstractClass
{
    abstract void AbstractMethod();   // public? private?

 

์ถ”์ƒ ํด๋ž˜์Šค๋‚˜ ํด๋ž˜์Šค๋Š” ๊ทธ ์•ˆ์—์„œ ์„ ์–ธ๋˜๋Š” ๋ชจ๋“  ํ•„๋“œ, ๋ฉ”์†Œ๋“œ, ํ”„๋กœํผํ‹ฐ, ์ด๋ฒคํŠธ ๋ชจ๋‘ ์ ‘๊ทผ ํ•œ์ •์ž๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด private์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค. ์—ฌ๊ธฐ์— ์ถ”์ƒ ๋ฉ”์†Œ๋“œ ๋˜ํ•œ ์˜ˆ์™ธ๊ฐ€ ๋  ์ˆ˜๋Š” ์—†๋‹ค.

 

ํ•˜์ง€๋งŒ ์•ฝ์† ์—ญํ• ์„ ํ•˜๋Š” ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๊ฐ€ private์ด๋ผ๋Š” ๊ฒƒ์ด ๋ง์ด ์•ˆ ๋œ๋‹ค.

๊ทธ๋ž˜์„œ C# ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฐ˜๋“œ์‹œ public, protected, internal, protected internal ํ•œ์ •์ž ์ค‘ ํ•˜๋‚˜๋กœ ์ˆ˜์‹๋  ๊ฒƒ์„ ๊ฐ•์š”ํ•œ๋‹ค.

 

 

์ถ”์ƒ ํด๋ž˜์Šค๊ฐ€ ๋˜ ๋‹ค๋ฅธ ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ๊ฒฝ์šฐ

์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๋˜ ๋‹ค๋ฅธ ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ ์ž์‹ ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ ์ถ”์ƒ ํด๋ž˜์Šค์˜ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ํด๋ž˜์Šค์—์„œ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

 

 

 

"๊ทธ๋ž˜์„œ, ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฑด๋ฐ?"

์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ• ๊นŒ? ๋งŒ์•ฝ ํŒ€๋ผ๋ฆฌ ์ผ์„ ํ•˜๋Š”๋ฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ง์„ ๋“ค์—ˆ๋‹ค๊ณ  ์ƒ๊ฐ ํ•ด๋ณด์ž.

 

 

"์ด ํด๋ž˜์Šค๋Š” ์ง์ ‘ ์ธ์Šคํ„ด์Šคํ™”ํ•˜์ง€ ๋ง๊ณ  ์ž์‹ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜์„ธ์š”.
Method1()๊ณผ Method2()๋Š” ๊ผญ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."
 


 

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ๋„ ์‚ฌ๋žŒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๋ฆฌ ์ด๋Ÿฐ ์ข‹์€ ๋ฉ”๋‰ด์–ผ์ด ์žˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„, ์ผ์ด ๋งŽ๋‹ค๋ณด๋ฉด ๊นŒ๋จน์„ ์ˆ˜๋„ ์žˆ๋‹ค.

์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ผ์ด ์—†์–ด์ง„๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ๊ฐ•์ œํ•˜๋„๋ก ์š”๊ตฌํ•˜๊ณ , ์•ˆ ํ•˜๋ฉด ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ด๊ฒƒ์ด ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋‹ค.

 

 

 

 

 

 

 

  • ์ด ๊ธ€์€ <์ด๊ฒƒ์ด C#์ด๋‹ค> ์ฑ…์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ณต๋ถ€ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.
728x90
๋ฐ˜์‘ํ˜•