상속은 객체지향 프로그래밍에서 가장 중요한 개념 중 하나입니다. 상속을 통해 다른 클래스를 기반으로 클래스를 정의할 수 있으므로 애플리케이션을 더 쉽게 만들고 유지 관리할 수 있습니다. 또한 코드를 재사용하고 개발 시간을 절약하는 데 도움이 됩니다.
프로그래머는 클래스를 만들 때 새 데이터 멤버와 멤버 함수를 완전히 다시 작성할 필요가 없으며 새 클래스를 디자인하고 기존 클래스의 멤버를 상속하기만 하면 됩니다. 이 기존 클래스를 기본 클래스라고 하고 새 클래스를 파생 클래스라고 합니다.
상속의 개념은 (IS-A) 관계를 구현합니다. 예를 들어, 포유류는 (IS-A) 동물이고 개는 (IS-A) 포유류이므로 개는 (IS-A) 동물입니다.
기본 및 파생 클래스
클래스는 여러 클래스 또는 인터페이스에서 파생될 수 있습니다. 즉, 여러 기본 클래스 또는 인터페이스에서 데이터와 함수를 상속할 수 있습니다.
C#에서 파생 클래스를 생성하는 구문은 다음과 같습니다.
기본 클래스 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;} // Disposter 클래스 RECTANGLE: Shape {Publicint Getarea ( ) {RETURN (Width*Height);}} 클래스 Rectangleteter {Static voidMain(string[] args) { Rectangle Rect = new Rectangle(); Rect.setWidth(5); Rect.setHeight(7) //객체의 면적을 인쇄합니다. Console.WriteLine("전체 면적 : {0 }", Rect .getArea()); Console.ReadKey(); } }}
위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
초기화 기본 클래스파생 클래스는 기본 클래스의 멤버 변수와 멤버 메서드를 상속합니다. 따라서 자식 클래스 객체가 생성되기 전에 부모 클래스 객체가 생성되어야 합니다. 멤버 초기화 목록에서 상위 클래스를 초기화할 수 있습니다. 다음 프로그램이 이를 보여줍니다.using System;namespace RectangleApplication{ class Rectangle { // 成员变weight 보호된 이중 길이; 보호된 이중 너비; 공개 직사각형(이중 l, 이중 w) { 길이 = l; 너비 = = w; } public double GetArea() { 반환 길이 * 너비; } public void Display() { Console.WriteLine("长degree: {0}", length); Console.WriteLine("크기: {0}", 너비); Console.WriteLine("화면 종류: {0}", GetArea()); } }//end class Rectangle class Tabletop : Rectangle { private double cost; publicTabletop(double l, double w) : base(l, w) { } public double GetCost() { double cost; 비용 = GetArea() * 70; 반품 비용; } public void Display() { base.Display(); Console.WriteLine("成本: {0}", GetCost()); } } classExecuteRectangle { static void Main(string[] args) { Tabletop t = new Tabletop(4.5,7.5); t.디스플레이(); Console.ReadLine(); } 🎜>
C#多卧承더 많은 继承指的是一个类别可以同时从多于一个父类继承行为与特征的功能。与单一继承对,单一继承指一个类别只可以继承自一个父类。C#은 더 많은 부하를 지원하지 않습니다.System;namespace InheritanceApplication{ class Shape 사용 { public void setWidth(int w) { 너비 = w; } public void setHeight(int h) { 높이 = h; } 보호된 int 너비; 보호된 int 높이; } // 基类 PaintCost 공개 인터페이스 PaintCost { int getCost(int area); } // 派生类 class Rectangle : Shape, PaintCost { public int getArea() { return (너비 * 높이); } public int getCost(int area) { 반환 영역 * 70; } } class RectangleTester { static void Main(string[] args) { Rectangle Rect = new Rectangle(); 내부 영역; Rect.setWidth(5); Rect.setHeight(7); 면적 = Rect.getArea(); // 打印对象적 화면 Console.WriteLine("总face积: {0}", Rect.getArea()); Console.WriteLine("油漆总成本: ${0}" , Rect.getCost(area)); Console.ReadKey(); } }}
当上面的代码被编译和执行时,它会产生下列结果:
总面积: 35油漆总成本: $2450
更多C#继承关文章请关注PHP中文网!