π» Programming Language/C#
11. μ€λ²λΌμ΄λ©(virtual, override, new)
S.Honey
2022. 4. 6. 09:24
namespace Override
{
class BaseClass
{
public virtual void echo()
{
Console.WriteLine("κΈ°λ° ν΄λμ€");
}
public virtual void echo2()
{
Console.WriteLine("κΈ°λ° echo2");
}
}
class DerivedClass : BaseClass
{
override public void echo()
//λΆλͺ¨ν΄λμ€ λ΄μ virtualλ‘ μ μΈλμ΄ μλ λ©μλλ₯Ό νμν΄λμ€μμ μ¬μ μν λ
// override ν€μλλ₯Ό μμ λΆμ΄κ³ λ©μλλ₯Ό μ¬μ μν΄μ€λ€.
// => μ΄λ κ² μ¬μ©νλκ² μ νν λ°©λ²μ΄κ³ μλ¬λ κ²½κ³ κ° μλΈ
{
Console.WriteLine("νμ ν΄λμ€");
}
public new void echo2()
{
Console.WriteLine("νμ echo2");
}
}
class Program
{
static void Main(string[] args)
{
DerivedClass dc = new DerivedClass();
dc.echo();
dc.echo2();
BaseClass bdc = new DerivedClass();
bdc.echo2();
}
}
}
Output
νμ ν΄λμ€
νμ echo2
κΈ°λ° echo2
μ€λ²λΌμ΄λ(Override)
: λ©μλ μ¬μ μ
virtual
:λΆλͺ¨(κΈ°λ° : base) ν΄λμ€
λ©μλ μμ λΆλ ν€μλ- μμ(νμ: derived) ν΄λμ€μμ μ¬μ μ λ μ μλ€. = μ¬μ μ νμ§ μμλ λλ€.
override
:μμ(derived) ν΄λμ€
λ©μλ μμ λΆλ ν€μλ- λΆλͺ¨λ‘λΆν° λ°μ λ©μλλ₯Ό μ¬μ μ νλ€.
- μ£Όμ) λΆλͺ¨μ λ©μλμ΄λ¦κ³Ό κ°μ λ©μλμ¬μΌ νλ©° νμ μμ κ°μ νλ‘ν νμ
λ μΌμΉμμΌμΌνλ€.(Ex :
public void
μ κ°μκ²λ€)
new
:new
ν€μλλ μ€λ²λΌμ΄λμ λ€λ₯΄κ² κ°μ μ΄λ¦μ λ©μλλλΌλ λ 립μ μΈ λ©μλλ₯Ό μ μΈν λ μ¬μ©νλ€.- μ€λ²λΌμ΄λ©κ³Όλ λ€λ₯Έ κ°λ μΌλ‘ λ©μλλ₯Ό μ¨κΈ°λ κΈ°λ₯μ΄λ€.