π» Programming Language/C#
16. μΆμν΄λμ€(Abstract Class) μ΄ν΄
S.Honey
2022. 4. 6. 09:28
namespace AbstractClassEx
{
abstract class MyAbstractClass
{
protected void protectedMethod()
{
Console.WriteLine("μΆμν΄λμ€μ protected method");
}
public void publicMethod()
{
Console.WriteLine("μΆμν΄λμ€μ public method");
}
public abstract void abstractMethod();
// μΈν°νμ΄μ€μμλ μΆμλ©μλκ° κΈ°λ³Έμ μΌλ‘ publicμ΄κΈ° λλ¬Έμ λ°ννμ
λ§ μ¬μ©νμ§λ§
// μΆμν΄λμ€μμλ μΆμλ©μλμ μ νμ λ° abstract ν€μλλ₯Ό μ¬μ©ν΄μ€μΌ νλ€.
}
class Child : MyAbstractClass
{
public override void abstractMethod()
// μ΄λ override ν€μλλ₯Ό μ¬μ©νμ¬ μΆμν΄λμ€ λ΄ μΆμλ©μλλ₯Ό μ¬μ μνλ€.
{
Console.WriteLine("μΆμν΄λμ€μ AbstractMethod νΈμΆ");
protectedMethod();
}
}
class Program
{
static void Main(string[] args)
{
MyAbstractClass ma = new Child();
ma.abstractMethod();
ma.publicMethod();
}
}
}
Output
μΆμν΄λμ€μ AbstractMethod νΈμΆ
μΆμν΄λμ€μ protected method
μΆμν΄λμ€μ public method
μΆμν΄λμ€
: μΈν°νμ΄μ€μ λΉμ·νλ€ νμ§λ§,μΆμν΄λμ€
λꡬν(λͺΈν΅)λΆ
λ₯Ό κ°μ§ μ μλ€. = ꡬνλΆλ₯Ό μκ°μ§ μλ μλ€.
- μΆμν΄λμ€λ ꡬνμ κ°μ§ μ μμ§λ§ μΈμ€ν΄μ€λ₯Ό λ§λ€ μ μλ€.
- μ¬μ©νλ νμ μλ abstractμ classλ₯Ό μ¬μ©νλ€.
μΆμν΄λμ€ μ μΈ νμ
abstract class ν΄λμ€λͺ
{
...
// ν΄λμ€μ λμΌ
}
μΆμ ν΄λμ€
λν΄λμ€
μ λ¬λ¦¬μΆμλ©μλ
λ₯Ό κ°μ§κ³ μλ€.
μΆμ ν΄λμ€
λ λͺ¨λ λ©€λ²μ μ κ·Ό μ νμλ₯Ό μ¬μ©νμ§ μμ κ²½μ°privateμΌλ‘ μ€μ
λλ€.- λ¨, μΆμλ©μλλ μλ¨. ꡬνλΆκ° μλ λ©μλμ νμ νμ¬ privateμΌλ‘ μ€μ λλκ².
μΆμ λ©μλ
λ₯Ό μ§μ ν λabstract
ν€μλλ₯Ό μ¬μ©νλ€.
μΆμλ©μλμ νμ
public abstract void A();
- μΆμ λ©μλλ
private
μ μ¬μ©ν μ μλ€ => μΈλΆμμ ꡬννμ¬ μ¬μ©ν΄μΌνκΈ° λλ¬Έμ- λ°λΌμ
public
,protected
,internal
,protected internal
μ€ νλλ₯Ό μ¬μ©ν΄μΌνλ€.
- λ°λΌμ
override
ν€μλλ₯Ό μ¬μ©νμ¬μΆμν΄λμ€
λ΄μΆμλ©μλ
λ₯Όμ¬μ μ
νλ€.