[개요] 디자인 패턴 차분 방법 및 가상 메소드

1. 추상 메소드

그것은 단지 추상 클래스에서 정의 할 수 있습니다

수정 조치는 개인 가상 정적을 수정할 수 없습니다

다음과 같이 추상 방법은 :

public abstract class People   //声明一个抽象类
{
   public abstract void study();  //抽象方法只能定义在抽象类中。
}
public class Student:People   //继承抽象类
{
     public  override void study()     //重写抽象类的抽象方法
     {
            Console.WriteLine("好好学习,天天向上!");
     }
}
public class Program
{
    static void Main(string[] args)
{
      Student t= new Student();//实例化派生类
      People  p= t;   //使用派生类对象实例化抽象类
       //以上两句等价于  
      //People p = new Student();//使用派生类对象实例化抽象类;
      p.study(); //使用抽象类对象调用抽象类中的抽象方法study    
}
}

요약 : 

추상 클래스 (1) 만 선언 할 수 있습니다 추상적 인 방법은 키워드 사용 추상적를

(2) 추상 클래스 추상 메소드는 서브 클래스에 의해 오버라이드 (override) 할 수 있어야합니다 .

[추상적 방법은 그 방법이 아닙니다 !! 무시해야 서브 그 방법은, 이와 같이 가상 방법으로 알 수있는 추상적 인 방법에있어서, 본체 아니다]

 

가상 방법 :

가상 메소드를 사용하여 수정 :

가상 방법은 그 방법이 될 수있다. 다음과 같이 구체적인 예는 다음과 같습니다

public class BaseClass         //创建一个基类
{
    public virtual string GetName()    //使用virtual关键字创建父类中的虚方法
    {
             return "父类虚方法体":     
     }
}
public class SubClass:BaseClass    //子类继承父类
{
     public override string GetName();   //子类重写父类虚方法
      {
               return "重写父类虚方法!";
       }
}

상기 예 : 상위 클래스의 가상 메소드 파생 클래스 재이다.

참고 : 가상 수정은 개인, 정적, 추상, 재정의 수정 자와 함께 사용할 수 없습니다.

PS : 재정의 수정 및 새로운 것은, 정적, 가상 수정 동시에 사용하고, 단지 재 작성의 기본 클래스 가상 메서드 메서드를 오버라이드 (override).

 

 

셋째로, 둘 사이의 차이 :

요약 : 추상 메소드는 메소드 이름이고, 몸 (즉, 구체적인 구현 방법 없음), 추상적 인 방법을 다시 작성해야합니다 상위 클래스를 서브 클래 싱 방법은 없습니다;

           이 방법은 가상 기능 부재는 방법을 갖고 있지만, 서브 커버 할 수는 적용되지 않을 수도있다.

(1) 가상 메소드의 방법은 이들 방법은 그 방법 추상 아니다. 추상적 인 방법은 파생 된 클래스 강제 또는 파생 된 클래스가 인스턴스화 될 수 피복하는 방법이다;

(2) 추상 클래스가 아닌 가상 메서드 만 추상 메소드 선언;

(3) 추상 클래스의 추상 메소드를 오버라이드 (override) 할 필요가 파생 클래스는 가상 메서드는 필요하지 않습니다.

추천

출처blog.csdn.net/qq_30631063/article/details/87074458