C\#추상 류 와 개폐 원칙 에 대해 간단히 말 하 다

1.추상 류 와 추상 방법:
(1)키워드 abstract 를 사용 하여 수식 하 는 종 류 를 추상 류 라 고 한다.
(2)추상 류 는 하나의 행위 만 사용 할 뿐 대상 을 만 드 는 것 을 통 해 단독으로 사용 할 수 없습니다.new 를 사용 하 는 것 은 잘못된 것 입 니 다.파생 류 를 통 해 함수 구성원 의 구체 적 인 논 리 를 실현 할 수 있 습 니 다.
(3)추상 류 에 추상 적 인 방법 이 있 을 수도 있 고 추상 적 인 방법 이 없 을 수도 있다.유형 에 추상 적 인 방법 이 존재 한다 면 이런 유형 은 바로 추상 류 이다.
(4)추상 류 는 정적(static)이나 밀봉(sealed)일 수 없다.
다음은 간단 한 추상 류 이다.

abstract class Vehicle
 { 
  public abstract void test();
  public void VehicleTest()
  {

  }
 }

 class Car : Vehicle
 { 
  public override void test()
  {

  }

 }
2.개폐 원칙
 bug 를 수정 하거나 새로운 기능 을 추가 하기 위해 서가 아니라면 클래스 의 코드 를 함부로 변경 하지 마 십시오.
다시 말 하면 우 리 는 확실 하고 변 하지 않 으 며 안정 적 이 고 고정 적 인 것 을 포장 해 야 한다.불확실 하고 바 뀔 수 있 는 구성원 을 추상 류 로 성명 하고 하위 류 에 남 겨 두 어 실현 하도록 한다.
3.우 리 는 간단하게 계승 을 실현 했다.

class Program
 {
  static void Main(string[] args)
  {
   Vehicle raceCar = new RaceCar();
   
   Console.ReadKey();
  }
 }

 /// <summary>
 ///      
 /// </summary>
 class Vehicle
 {
  /// <summary>
  ///   
  /// </summary>
  public void Stop()
  {
   Console.WriteLine("Stopped");
  }
  /// <summary>
  ///   
  /// </summary>
  public void Fill()
  {
   Console.WriteLine("Fill");
  } 
 }

 class Car : Vehicle
 {
  public void Run()
  {
   Console.WriteLine("Car is running"); 
  } 
 }
 class RaceCar : Car
 { 
  public void Run()
  {
   Console.WriteLine("RaceCar is running");

  } 
 }
위의 코드 를 통 해 알 수 있 듯 이 이것 은 계승 체인 이다.그 중에서 Run 방법 은 서로 다른 종류의 차 에 따라 구별 되 기 때문에 우리 가 다 형 을 실현 하려 면 예 를 들 어    Vehicle raceCar = new RaceCar();이때 raceCar 대상 은 Run 방법 으로 바 꿀 수 없습니다.Vehicle 류 에 이런 방법 이 없 었 기 때문에 예전 에 이런 상황 에 대한 해결 방법 은 Vehicle 에 Run 방법 을 추가 하고 어떤 유형 이 있 는 지 판단 하 는 것 입 니 다.

public void Run(string type)
  {
   if (type == "Car")
   {
    Console.WriteLine("Car is running");
   }
   else if (type == "RaceCar")
   {
    Console.WriteLine("RaceCar is running");
   }
   else
   {

   }
  }
위의 코드 와 같이 새로운 유형 을 추가 할 때 이 기본 클래스 의 방법 을 다시 고 쳐 야 합 니 다.개폐 원칙(bug 를 수정 하거나 새로운 기능 을 추가 하기 위해 서 는 클래스 의 코드 를 함부로 변경 하지 마 십시오)을 위반 하기 때문에 수정 이 필요 합 니 다.

public virtual void Run()
  {
  
    Console.WriteLine("RaceCar is running");
   
  }
파생 류 는 이 방법 을 다시 쓰 면 새로운 유형 을 추가 할 때 다시 쓰 면 되 고 기본 코드 를 바 꾸 지 않 아 도 된다.그러나 만약 에 이런 유형 에서 이 Run 방법 을 사용 하지 않 을 것 이 라 고 생각한다 면 우 리 는 방법 체 를 없 애고 추상 적 인 방법 으로 바 꿀 수 있다.해당 하 는 유형 도 추상 적 인 유형 으로 바 뀌 고 Run 은 파생 류 에 의 해 다시 쓸 수 있다.

class Program
 {
  static void Main(string[] args)
  {
   Vehicle raceCar = new RaceCar();

   Console.ReadKey();
  }
 }

 /// <summary>
 ///      
 /// </summary>
 abstract class Vehicle
 {
  /// <summary>
  ///   
  /// </summary>
  public void Stop()
  {
   Console.WriteLine("Stopped");
  }
  /// <summary>
  ///   
  /// </summary>
  public void Fill()
  {
   Console.WriteLine("Fill");
  }
  public abstractvoid Run()
  {
  
    Console.WriteLine("RaceCar is running");
   
  }
 }

 class Car : Vehicle
 {
  public override void Run()
  {
   Console.WriteLine("Car is running");
  }
 }
 class RaceCar : Car
 {
  public override void Run()
  {
   Console.WriteLine("RaceCar is running");

  }
 }
4.인터페이스 와 추상 류
(1)구체 적 인 유형-추상 적 인 유형-인 터 페 이 스 는 점점 추상 적 이 고 내부 실현 의 유형 이 점점 적어 진다.
(2)추상 류 는 재 활용 으로 생 긴 다.기 류 를 바탕 으로 사용 하고 디 결합 기능 도 가진다.
(3)포장 이 확정 되 고 개방 이 불확실 하 며 하위 클래스 로 연기 된다.
(4)인 터 페 이 스 는 결합 을 해제 하기 위해 생 겨 나 고 내부 집적,저 결합,단원 테스트 에 편리 합 니 다.
(5)모두 예화 할 수 없고 변 수 를 설명 할 수 있 으 며 구체 적 인 사례 를 참조 할 수 있 습 니 다.
여기 서 C\#추상 류 와 개폐 원칙 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 C\#추상 류 와 개폐 원칙 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기