깊이 분석 c\#계승

4847 단어 c#이어받다
계승 은 대상 을 대상 으로 하 는 프로 그래 밍 에서 가장 중요 한 개념 중의 하나 이다.계승 은 하나의 클래스 에 따라 다른 클래스 를 정의 할 수 있 도록 합 니 다.이 는 프로그램 을 만 들 고 유지 하 는 것 이 쉬 워 집 니 다.코드 를 다시 사용 하고 개발 시간 을 절약 하 는 데 도 유리 하 다.
클래스 를 만 들 때 프로그래머 는 새로운 데이터 구성원 과 구성원 함 수 를 완전히 다시 만 들 필요 가 없습니다.새로운 클래스 만 설계 하고 기 존 클래스 의 구성원 을 계승 하면 됩 니 다.이 기 존의 종 류 는 기본 류 라 고 불 리 며,이 새로운 종 류 는 파생 류 라 고 불 린 다.
계승 하 는 사상 은(IS-A)관계 에 속한다.예 를 들 어 포유동물 은(IS-A)동물 에 속 하고 개 는(IS-A)포유동물 에 속 하기 때문에 개 는(IS-A)동물 에 속한다.
기류 와 파생 류
하나의 클래스 는 여러 클래스 나 인터페이스 에서 파생 될 수 있 는데 이것 은 여러 개의 기본 클래스 나 인터페이스 에서 데이터 와 함 수 를 계승 할 수 있다 는 것 을 의미한다.
C\#에서 파생 클래스 를 만 드 는 문법 은 다음 과 같 습 니 다.

<      > class <  >
{
 ...
}
class <   > : <  >
{
 ...
}
만약 에 기본 적 인 Shape 가 있다 고 가정 하면 파생 류 는 Rectangle 입 니 다.

using System;
namespace InheritanceApplication
{
  class Shape
  {
   public void setWidth(int w)
   {
     width = w;
   }
   public void setHeight(int h)
   {
     height = h;
   }
   protected int width;
   protected int height;
  }

  //    
  class Rectangle: Shape
  {
   public int getArea()
   {
     return (width * height);
   }
  }
  
  class RectangleTester
  {
   static void Main(string[] args)
   {
     Rectangle Rect = new Rectangle();

     Rect.setWidth(5);
     Rect.setHeight(7);

     //        
     Console.WriteLine("   : {0}", Rect.getArea());
     Console.ReadKey();
   }
  }
}
위의 코드 가 컴 파일 되 고 실 행 될 때 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.
총 면적:35
기본 클래스 초기 화
파생 류 는 기본 적 인 구성원 변수 와 구성원 방법 을 계승 했다.따라서 부모 클래스 대상 은 하위 클래스 대상 이 만 들 기 전에 만들어 져 야 합 니 다.구성원 초기 화 목록 에서 부모 클래스 를 초기 화 할 수 있 습 니 다.
다음 프로그램 은 이 점 을 보 여 줍 니 다.

using System;
namespace RectangleApplication
{
  class Rectangle
  {
   //     
   protected double length;
   protected double width;
   public Rectangle(double l, double w)
   {
     length = l;
     width = w;
   }
   public double GetArea()
   {
     return length * width;
   }
   public void Display()
   {
     Console.WriteLine("  : {0}", length);
     Console.WriteLine("  : {0}", width);
     Console.WriteLine("  : {0}", GetArea());
   }
  }//end class Rectangle 
  class Tabletop : Rectangle
  {
   private double cost;
   public Tabletop(double l, double w) : base(l, w)
   { }
   public double GetCost()
   {
     double cost;
     cost = GetArea() * 70;
     return cost;
   }
   public void Display()
   {
     base.Display();
     Console.WriteLine("  : {0}", GetCost());
   }
  }
  class ExecuteRectangle
  {
   static void Main(string[] args)
   {
     Tabletop t = new Tabletop(4.5, 7.5);
     t.Display();
     Console.ReadLine();
   }
  }
}
위의 코드 가 컴 파일 되 고 실 행 될 때 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.
길이
너비
면적:33.75
원가:2362.5
C\#다 중 상속
다 중 계승 이란 하나의 유형 이 하나의 아버지 류 보다 많은 계승 행위 와 특징 을 동시에 계승 할 수 있 는 기능 을 말한다.단일 상속 과 상대 적 으로 단일 상속 이란 하나의 유형 이 하나의 부류 에서 만 계승 할 수 있다 는 것 을 말한다.
C\#다 중 상속 은 지원 되 지 않 습 니 다.단,인 터 페 이 스 를 사용 하여 다 중 계승 을 실현 할 수 있 습 니 다.다음 프로그램 은 이 점 을 보 여 줍 니 다.

using System;
namespace InheritanceApplication
{
  class Shape
  {
   public void setWidth(int w)
   {
     width = w;
   }
   public void setHeight(int h)
   {
     height = h;
   }
   protected int width;
   protected int height;
  }

  //    PaintCost
  public interface PaintCost
  {
   int getCost(int area);

  }
  //    
  class Rectangle : Shape, PaintCost
  {
   public int getArea()
   {
     return (width * height);
   }
   public int getCost(int area)
   {
     return area * 70;
   }
  }
  class RectangleTester
  {
   static void Main(string[] args)
   {
     Rectangle Rect = new Rectangle();
     int area;
     Rect.setWidth(5);
     Rect.setHeight(7);
     area = Rect.getArea();
     //        
     Console.WriteLine("   : {0}", Rect.getArea());
     Console.WriteLine("     : ${0}" , Rect.getCost(area));
     Console.ReadKey();
   }
  }
}
위의 코드 가 컴 파일 되 고 실 행 될 때 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.
총 면적:35
페인트 총 원가:$2450
이상 은 c\#상속 의 상세 한 내용 을 깊이 분석 하고 c\#상속 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기