virtual,sealed,override,abstract 등 수식자 작용
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Learning
{
class Parent
{
public void F()
{
Console.WriteLine("Parent.F");
}
public virtual void G()
{
Console.WriteLine("Parent.G");
}
}
class Child : Parent
{
///
/// F() (new) F()
///
public new void F()
{
Console.WriteLine("Child.F");
}
///
public override void G()
{
Console.WriteLine("Child.G");
}
}
class Program
{
static void Main(string[] args)
{
Child b = new Child();
Parent a = b;
a.F();
b.F();
a.G();
b.G();
Console.ReadLine();
}
}
/* Child F() (new) F() ,
G() (override) 。 (new)
(override) , , 。
—— static virtual ,
。override virtual , static */
}
클래스 Child에서 F () 방법의 성명은 부모 클래스에서 거짓이 아닌 방법 F () 의 성명을 덮어쓰기 (new) 로 차단하고, G () 방법은 덮어쓰기 (override) 로 방법을 제공하는 다중 메커니즘을 사용합니다.주의해야 할 것은 리셋 (new) 방법과 덮어쓰기 (override) 의 차이입니다. 본질적으로 리셋 방법은 컴파일할 때 귀속되고, 덮어쓰기 방법은 실행할 때 귀속됩니다.지적할 만한 것은 허법은 정태적인 방법이 될 수 없다는 것이다. 즉static과virtual로 하나의 방법을 동시에 수식할 수 없다는 것이다. 이것은 그의 운행 시 유형 분석 메커니즘에 의해 결정된 것이다.override는 반드시 가상과 함께 사용해야 하며, 물론static와 동시에 사용할 수 없다.
만약 하나의 유형의 계승 체계에서 더 이상 허법을 덮어씌우고 싶지 않다면 어떻게 해야 합니까?정답은 sealed override(밀봉 커버)입니다. sealed와 override를 동시에 수식하면 이런 목적을 달성할 수 있습니다. 그것이 바로 sealed override public void F()입니다.이것은 반드시 sealed와 override를 동시에 사용하는 것이며, 밀봉하여 덮어쓰는 허방법이나 덮어씌운 허방법일 것이다.비허를 밀봉하는 방법은 무의미하고 잘못된 것이다.
추상적 (abstract) 방법은 논리적으로 허법과 유사하지만, 허법처럼 호출될 수 없고, 하나의 인터페이스의 성명이지 실현될 수 없다.추상적인 방법은 실현할 방법이 없고, 이렇게 하는 것도 허용되지 않는다.추상적인 방법 역시 정적일 수 없다.추상적인 방법을 포함하는 클래스는 반드시 추상적인 클래스이고 abstract류의 수식자를 넣어야 한다.그러나 추상류는 반드시 추상적인 방법을 포함해야 하는 것은 아니다.추상적인 방법을 포함하는 추상적인 클래스를 계승하는 하위 클래스는 덮어쓰고 실현해야 한다(override를 직접 사용한다). 또는 abstract override를 조합해서 계속 추상적으로 만들거나 덮어쓰고 실현하지 않으면 양자의 행위는 같다.다음 예를 참조하십시오.
using System;
abstract class Parent
{ public abstract void F();
public abstract void G(); }
abstract class Child: Parent
{ public abstract override void F();}
abstract class Grandson: Child
{
public override void F()
{ Console.WriteLine(“Grandson.F”);}
public override void G()
{ Console.WriteLine(“Grandson.G”);}
}
추상적인 방법은 계승된 허법을 추상화할 수 있다.운행시 귀속과 컴파일시 귀속의 기본적인 기리를 포착하면 방법이 보여준overload,virtual,override,sealed,abstract 등의 형태를 꿰뚫어 볼 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Asp. net 코어 와 라 이브 러 리 에서 프로필 정 보 를 읽 습 니 다.config 를 읽 는 것 처럼 간단 하고 완벽 하지 않 은 것 같 습 니 다.마이크로소프트 가. Asp. net core 에서 프로필 을 읽 는 블 로 그 를 많이 봤 는데 문제 가 잘 해결 되 지 않 은 것 같 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.