预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共154页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第4章面向对象编程进阶 4.1类的继承与多态 „继承是面向对象语言的基本特征,是实现代码 复用的手段。 „继承使得在原有的类基础之上,对原有的程序 进行扩展,从而提高程序开发的速度,实现代 码的复用。 „同一种方法作用于不同对象可以产生不同的结 果,这就是多态性。它是在基类中使用虚方 法,在其派生类中使用重载实现的。 4.1.1继承 1.使用继承 „继承不但可以使用现有类的所有功能,还可以 对这些功能进行扩展。 „继承产生的类称为派生类或子类,而被继承的 类则称为基类、超类或父类。 „客观世界中的许多事物之间往往都具有相同的 特征,具有继承的特点。 采用类的层次图表示继承的例子 【例4.1】类的继承。 usingSystem; //定义基类Shape publicclassShape { protectedstringColor; publicShape() {;} publicShape(stringColor) { this.Color=Color; } publicstringGetColor() { returnColor; } } //定义Circle类,从Shape类中派生 publicclassCircle:Shape { privatedoubleRadius; publicCircle(stringColor,doubleRadius) { this.Color=Color; this.Radius=Radius; } publicdoubleGetArea() { returnSystem.Math.PI*Radius*Radius; } } //派生类Rectangular,从Shape类中派生 publicclassRectangular:Shape { protecteddoubleLength,Width; publicRectangular() { Length=Width=0; } publicRectangular(stringColor,doubleLength,doubleWidth) { this.Color=Color; this.Length=Length; this.Width=Width; } publicdoubleAreaIs() { returnLength*Width; } publicdoublePerimeterIs()//周长 { return(2*(Length+Width)); } } //派生类Square,从Rectangular类中派生 publicclassSquare:Rectangular { publicSquare(stringColor,doubleSide) { this.Color=Color; this.Length=this.Width=Side; } } publicclassTestInheritance { publicstaticvoidMain() { CircleCir=newCircle("orange",3.0); Console.WriteLine("Circlecoloris{0},Circleareais{1}", Cir.GetColor(),Cir.GetArea()); RectangularRect=newRectangular("red",13.0,2.0); Console.WriteLine("Rectangualrcoloris{0}, Rectangualrareais{1}, Rectangularperimeteris{2}", Rect.GetColor(), Rect.AreaIs(), Rect.PerimeterIs()); SquareSqu=newSquare("green",5.0); Console.WriteLine("Squarecoloris{0}, SquareAreais{1}, Squareperimeteris{2}", Squ.GetColor(), Squ.AreaIs(), Squ.PerimeterIs()); } } 基类Shape直接派生了Circle和Rectangular 类,Rectangular类又派生了Square类。因为 基类的字段Color的修饰符为protected,方法 都可使用。 派生类在继承基类的成员基础上,也可以各自 增加功能。 2.base关键字 „例4.1程序中的Square类也可以改写成: //派生类Square,从Rectangular类中派生 publicclassSquare:Rectangular { publicSquare(stringColor,doubleSide)