博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#基本语法学习(六)
阅读量:6315 次
发布时间:2019-06-22

本文共 2328 字,大约阅读时间需要 7 分钟。

抽象类和密封类

  在定义类时可以使用abstract关键字声明这个类是抽象的。抽象类不能被实例化,即不能创建抽象类的实例。抽象类的主要作用是充当其他类的基类。

  密封类的概念刚好与抽象类相对,这种类不能充当别的类的基类。“密封”的概念是不可以从这个类派生出别的类。在定义类时用sealed关键字指明类是密封的。

  下面声明两个类,一个抽象类,一个密封类。

 

1 public abstract class Shape  //抽象类2 {3     ////        4 }5 6 public sealed class Rectangle:Shape  //密封类7 {8     9 }

 

  如果违反抽象类和密封类的规定,试图创建一个抽象类的实例或是试图从一个密封类派生出另外一个类,都会受到一个编译错误。

  抽象类中可以包含一种特殊的方法即抽象方法。抽象方法只有方法签名,没有方法体。声明抽象方法的语法如下:

  访问修饰符 abstract 返回值类型 方法名(参数列表);

  抽象方法只能包含在抽象类中,而且派生类必须重写父类中的抽象方法。抽象方法不能不含方法体,甚至不能包含大括号{},必须在参数列表后面直接跟分号。

1     public abstract class Shape 2     { 3         public abstract double calculateArea(); 4     } 5  6     public sealed class Triangle:Shape 7     { 8         private double edge, high; 9         public Triangle(double e, double h)10         {11             edge = e;12             high = h;13         }14 15         public override double calculateArea()16         {17             return edge * high / 2;18         }19     }20     public sealed class Rectangle:Shape21     {22         private double length, width;23         public Rectangle(double l, double w)24         {25             length = l;26             width = w;27         }28 29         public override double calculateArea()30         {31             return length * width;32         }33     }34 35     public sealed class Circle:Shape36     {37         private double radius;38         public Circle(double r)39         {40             radius = r;41         }42 43         public override double calculateArea()44         {45             return Math.PI * radius * radius;46         } 47     }48 49         static void Main(string[] args)50         {51             Shape s;52 53             s = new Triangle(10, 15);54             printArea(s);55             s = new Rectangle(10, 15);56             printArea(s);57             s = new Circle(10);58             printArea(s);59 60             Console.ReadLine();61         }62 63         static void printArea(Shape s)64         {65             Console.WriteLine("这个图形是: " + s.GetType().ToString());66             Console.WriteLine("这个图形的面积是: " + s.calculateArea().ToString());67         }68     }

  运行结果

这个图形是: ShapeExample.Triangle这个图形的面积是: 75这个图形是: ShapeExample.Rectangle这个图形的面积是: 150这个图形是: ShapeExample.Circle这个图形的面积是: 314.159265358979

 

转载于:https://www.cnblogs.com/numbqq/p/5287654.html

你可能感兴趣的文章
安装VisualSvn Server时遇到的问题
查看>>
不用Visual Studio,5分钟轻松实现一张报表
查看>>
人脸识别 开放书籍 下载地址
查看>>
Notepad++配置Python开发环境
查看>>
用户组概念 和 挂载 概念
查看>>
如何快速获取ADO连接字符串
查看>>
AspNetPager控件的最基本用法
查看>>
sessionKey
查看>>
高性能Javascript--脚本的无阻塞加载策略
查看>>
Java 编程的动态性, 第4部分: 用 Javassist 进行类转换--转载
查看>>
完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三
查看>>
iOS8 Push Notifications
查看>>
各大名企笔试及面经大全(程序猿必读)
查看>>
Oracle 连接、会话数的查看,修改
查看>>
英语学习的重要性
查看>>
原产地政策,jsonp跨域
查看>>
ffmpeg参数具体解释
查看>>
记一次公司仓库数据库服务器死锁过程
查看>>
Oracle 11g password过期被锁定报道 ORA-28000 the account is locked
查看>>
【Struts2学习笔记(2)】Action默认值和配置Action于result各种转发类型
查看>>