μΆμ ν΄λμ€λ "ꡬν"μ κ°μ§ μ μλ€.
νμ§λ§ ν΄λμ€μ λ¬λ¦¬ μΈμ€ν΄μ€λ₯Ό κ°μ§ μ μλ€.
νλ§λλ‘ μΆμ ν΄λμ€λ ꡬνμ κ°λ μΈμ€ν΄μ€λ λ§λ€μ§ λͺ»νλ€.
κ·Έλ¦¬κ³ μΆμ λ©μλλ₯Ό κ°μ§ μ μλ€.
(μΆμλ©μλλ μΆμν΄λμ€κ° μΈν°νμ΄μ€μ μν λ ν μ μκ² ν΄μ£Όλ μ₯μΉμ΄λ€. μλνλ©΄ ꡬνμ κ°μ§λ λͺ»νμ§λ§ νμ ν΄λμ€μμ λ°λμ ꡬννλλ‘ κ°μ νκΈ° λλ¬Έμ΄λ€. λ€μλ§ν΄ μΆμν΄λμ€λ₯Ό μμνλ ν΄λμ€λ€μ΄ λ°λμ μ΄ λ©μλλ₯Ό κ°κ³ μμ κ±°λλ 'μ½μ'μ΄λ€.)
C# μ»΄νμΌλ¬λ μΆμ λ©μλκ° λ°λμ public, protected, internal, protected internal νμ μ μ€ νλλ‘ μμλ κ²μ κ°μνλ€. μ΄λ κ² νλ©΄ ν΄λμ€μ μ κ·Όμ± μμΉλ, μΈν°νμ΄μ€μ μ κ·Όμ± μμΉλ μ§μΌμ§ μ μλ€.
μΆμ ν΄λμ€λ abstract νμ μμ class ν€μλλ₯Ό μ΄μ©ν΄μ μ μΈνλ€.
abstract class ν΄λμ€μ΄λ¦
{
//ν΄λμ€μ λμΌνκ² κ΅¬ν
}
μλλ μΆμλ©μλ μ μΈ μμ΄λ€.
public abstract class Abs
{
public abstract void baseAbs();
}
public class Son : Abs
{
public override void baseAbs()
{
Console.WriteLine("μΆμλ©μλ μμλ°μμ΅λλ€.");
}
}
μΆμν΄λμ€λ μΈν°νμ΄μ€μ ν΄λμ€μ μ€κ°μ μλ€.
...λΌκ³ λ νμ§λ§
μ¬μ€ μΆμν΄λμ€λ ν΄λμ€μ λ κ°κΉλ€. μΆμν΄λμ€μ μ κ·Όμ± κ°μ κ²½μ°λ ν΄λμ€μ λκ°λ€.
κ·Έλ¦¬κ³ μΈν°νμ΄μ€μμ λͺ¨λ λ©μλκ° publicμΌλ‘ μ μΈλλ λ°λ©΄,
ν΄λμ€λ νμ μλ₯Ό λͺ μνμ§ μμΌλ©΄ λͺ¨λ λ©μλκ° privateλ‘ μ μΈλλ€.
ννΈ, μΆμ ν΄λμ€μλ μΈμ€ν΄μ€λ₯Ό λ§λ€ μ μλ€λ μ μΈμλ ν΄λμ€μ λ€λ₯Έ μ μ΄ λ νλ λ μλ€.
μΆμ λ©μλλ₯Ό κ°μ§ μ μλ€λ μ¬μ€μ΄λ€.
μΆμ λ©μλλ μΆμ ν΄λμ€κ° μΈν°νμ΄μ€ μν λ ν μ μκ² ν΄μ£Όλ μ₯μΉμ΄λ€.
㴠ꡬνμ κ°μ§ λͺ»νμ§λ§ νμ ν΄λμ€μμ λ°λμ ꡬννλλ‘ κ°μ ν¨
γ΄ μΆμ ν΄λμ€λ₯Ό μμνλ ν΄λμ€λ€μ λ°λμ μ΄ μΆμ λ©μλλ₯Ό κ°κ³ μμ΄μΌ νλ€. [κ·Έκ²μ΄ μ½μμ΄λκΉ....(λ루ν ν€)]
<μΆμ λ©μλμ κΈ°λ³Έ μ κ·Όμ±>μ...
μΈν°νμ΄μ€μ²λΌ publicμΌμλ, ν΄λμ€μ²λΌ private μΌ μλ μλ€.
μΆμ ν΄λμ€λ ν΄λμ€λ κ·Έ μμμ μ μΈλλ λͺ¨λ νλ, λ©μλ, νλ‘νΌν°, μ΄λ²€νΈ λͺ¨λ μ κ·Ό νμ μλ₯Ό λͺ μνμ§ μμΌλ©΄ privateμ΄λ€. μ¬κΈ°μ μΆμ λ©μλλ μμΈκ° λ μ μλ€λ§!
μ»΄νμΌλ¬λ 'μ½μ' μν μ νλ 'μΆμ λ©μλ'κ° λ°λμ public, protected, internal, protected internal νμ μ μ€ νλλ‘ μμλ κ²μ κ°μνλ€. ('μ½μ' μν μ μνν΄μΌνλλ° privateλ κ°λΉμΉλ μλ€!)-> μ΄λ κ² νλ©΄ ν΄λμ€μ μ κ·Όμ± μμΉλ, μΈν°νμ΄μ€μ μ κ·Όμ± μμΉλ μ§μΌμ§ μ μλ€.
abstract class AbstractBase
{
public abstract void SomeMethod();
}
class Derived : AbstractBase
{
public override void SomeMethod()
{
//Something
}
}
<μΆμ ν΄λμ€κ° λ λ€λ₯Έ μΆμ ν΄λμ€λ₯Ό μμνλ κ²½μ°>
μΆμ ν΄λμ€λ λ λ€λ₯Έ μΆμ ν΄λμ€λ₯Ό μμν μ μμΌλ©°,
μ΄ κ²½μ° μμ μΆμ ν΄λμ€λ λΆλͺ¨ μΆμ ν΄λμ€μ μΆμ λ©μλλ₯Ό ꡬννμ§ μμλ λλ€.
μΆμ λ©μλλ μΈμ€ν΄μ€λ₯Ό μμ±ν ν΄λμ€μμ ꡬννλ©΄ λκΈ° λλ¬Έμ΄λ€.
<μΆμν΄λμ€ μμ >
using System;
namespace AbstractClass
{
abstract class AbstractBase
{
protected void PrivateMethodA()
{
Console.WriteLine("AbstractBase.PrivateMethodA()");
}
public void PublicMethodA()
{
Console.WriteLine("AbstractBase.PublicMethodA()");
}
public abstract void AbstractMethodA();
}
class Derived : AbstractBase
{
public override void AbstractMethodA()
{
Console.WriteLine("Derived.AbstractMethodA()");
PrivateMethodA();
}
}
class MainApp
{
static void Main(string[] args)
{
AbstractBase obj = new Derived();
obj.AbstractMethodA();
obj.PublicMethodA();
}
}
}
<μΆλ ₯κ²°κ³Ό>
Derived.AbstractMethodA()
AbstractBase.PrivateMethodA()
AbstractBase.PublicMethodA()
<μ΄κ±΄ κΆκΈν΄μ λλ €λ³Έ κ²> : μλμ κ°μ΄ μΆμ λ©μλκ° μλ μΆμ ν΄λμ€λ λ¬Έλ²μ μΌλ‘ νμκ° μλ κ²μ μλμ§λ§, μ€μ§μ μΌλ‘λ λ³ μλ―Έκ° μλ μ½λλΌκ³ ν μ μλ€.
using System;
namespace AbstractClass
{
abstract class AbstractBase
{
protected void PrivateMethodA()
{
Console.WriteLine("AbstractBase.PrivateMethodA()");
}
public void PublicMethodA()
{
Console.WriteLine("AbstractBase.PublicMethodA()");
}
}
class Derived : AbstractBase
{
}
class MainApp
{
static void Main(string[] args)
{
AbstractBase obj = new Derived();
obj.PublicMethodA();
}
}
}
<μΆλ ₯ κ²°κ³Ό>
AbstractBase.PublicMethodA()
<μΆμν΄λμ€μ μΈλͺ¨>
"μ΄ ν΄λμ€λ μ§μ μΈμ€ν΄μ€ννμ§ λ§κ³ νμν΄λμ€λ₯Ό λ§λ€μ΄ μ¬μ©νμΈμ. μ, κ·Έλ¦¬κ³ μΆμλ©μλλ₯Ό κΌ μ€λ²λΌμ΄λ©ν΄μΌν©λλ€. μ»΄νμΌλ¬λ μ¬μ§μ΄ νλ‘κ·Έλλ¨Έλ€μ΄ μ΄λ₯Ό μ€μνλλ‘ κ°μ μν¬ κ²μ λλ€."
λ΄κ° λ§λ μΆμ ν΄λμ€λ₯Ό μ΄μ©νλ λ€λ₯Έ νλ‘κ·Έλλ¨Έκ° νμ ν΄λμ€λ₯Ό λ§λ€μ΄μΌ νλ©΄ λͺ¨λ μΆμ λ©μλλ₯Ό ꡬνν΄μΌ νλ€λ μ¬μ€μ μμ΄λ²λ¦°λ€ ν΄λ, μ»΄νμΌλ¬κ° μ΄λ₯Ό μκΈ°μμΌμ€ κ²μ΄λ€. μ΄κ²μ΄ μΆμν΄λμ€λ₯Ό μ¬μ©νλ μ΄μ μ΄λ€.
'C# > μ΄κ²μ΄ C#μ΄λ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
36. μΈν°νμ΄μ€μ κΈ°λ³Έ ꡬν λ©μλ (0) | 2022.02.22 |
---|---|
38. μΈν°νμ΄μ€ μμ 1, 2 λ³΅μ΅ (0) | 2022.02.22 |
35. μΈν°νμ΄μ€ λ€μ€ μμ (0) | 2022.02.15 |
34. μΈν°νμ΄μ€λ₯Ό μμνλ μΈν°νμ΄μ€ (0) | 2022.02.15 |
33. μΈν°νμ΄μ€(1) (0) | 2022.02.14 |