재정의
재정의에서 하위 클래스 유형에 고유한 동작을 정의할 수 있습니다. 이는 하위 클래스가 요구 사항에 따라 상위 클래스 메서드를 구현할 수 있음을 의미합니다.
Overriding을 구현하는 추상 클래스의 예를 살펴보겠습니다 −
예
using System;
namespace PolymorphismApplication {
abstract class Shape {
public abstract int area();
}
class Rectangle: Shape {
private int length;
private int width;
public Rectangle( int a = 0, int b = 0) {
length = a;
width = b;
}
public override int area () {
Console.WriteLine("Rectangle class area :");
return (width * length);
}
}
class RectangleTester {
static void Main(string[] args) {
Rectangle r = new Rectangle(10, 7);
double a = r.area();
Console.WriteLine("Area: {0}",a);
Console.ReadKey();
}
}
} 그림자
섀도잉은 메서드 은닉이라고도 합니다. 섀도잉에서 override 키워드를 사용하지 않고도 부모 클래스의 메서드를 자식 클래스에서 사용할 수 있습니다. 자식 클래스에는 동일한 기능의 자체 버전이 있습니다.
new 키워드를 사용하여 섀도잉을 수행하고 기본 클래스 기능의 고유 버전을 생성합니다.
예를 들어 보겠습니다 -
예
using System;
using System.Collections.Generic;
class Demo {
public class Parent {
public string Display() {
return "Parent Class!";
}
}
public class Child : Parent {
public new string Display() {
return "Child Class!";
}
}
static void Main(String[] args) {
Child child = new Child();
Console.WriteLine(child.Display());
}
}