728x90
반응형
1. 핵심 정리
using System;
class Base {
public int data1 = 10;
public int data2 = 10;
}
class Derived : Base {
public int data1 = 20;
}
class Program {
static void Main() {
Derived d = new Derived();
Console.WriteLine(d.data1); // 20
Console.WriteLine(((Base)d).data1); // 10
}
}
① 접근 지정자는 모든 멤버에 개별적으로 표기한다.
② 상속은 : 연산자를 사용한다.
③ 객체 생성 시에는 ()가 있어야 한다.
④ 기반 클래스에 있는 멤버와 동일한 이름의 필드 또는 메소드를 만들 때
=> new 를 표기
2. 메소드
using System;
class Base {
public void Foo() { Console.WriteLine("Base foo"); }
}
class Derived : Base {
public void Foo() { Console.WriteLine("Derived foo"); }
}
class Program {
static void Main() {
Base b1 = new Base();
b1.Foo(); // Base Foo
Derived d1 = new Derived();
d1.Foo(); // Derived Foo
Base b2 = new Derived();
b2.Foo(); // Base Foo ? Derived Foo?
}
}
① 메소드의 종류
② 가상이 아닌 메소드를 재정의 할 때는 컴파일러 경고가 발생하지 않게 하려면 new 를 사용
3. 메소드 재정의
using System;
using static System.Console;
class Base {
public virtual void Foo() { WrtieLine("Base foo"); }
}
class Derived : Base {
public override void Foo() { WrtieLine("Derived foo"); } // 1
public new void Foo() { WrtieLine("Derived foo"); } // 2
public void Foo() { WrtieLine("Derived foo"); } // 3
public virtual void Foo() { WrtieLine("Derived foo"); } // 4
}
class Program {
static void Main() {
Base b = new Derived();
b.Foo();
}
}
실행 결과
1. override -> Derived
2. new -> Base
3. .. -> Base
4. virtual -> Base
① 가상 메소드를 재정의 하는 방법
728x90
반응형
'프로그래밍 > C#' 카테고리의 다른 글
[C#] 타입과 변수의 특징 (0) | 2020.01.20 |
---|---|
[C#] 인터페이스 (interface) (1) | 2020.01.17 |
[C#] 표준 입력 (0) | 2020.01.13 |
[C#] 표준 출력 (0) | 2019.12.14 |
[C#] 기본 코드 (0) | 2019.12.03 |