C#基本语法学习(六)
2016-03-17 15:38
507 查看
[b]抽象类和密封类[/b]
[b] [/b]在定义类时可以使用abstract关键字声明这个类是抽象的。抽象类不能被实例化,即不能创建抽象类的实例。抽象类的主要作用是充当其他类的基类。
密封类的概念刚好与抽象类相对,这种类不能充当别的类的基类。“密封”的概念是不可以从这个类派生出别的类。在定义类时用sealed关键字指明类是密封的。
下面声明两个类,一个抽象类,一个密封类。
如果违反抽象类和密封类的规定,试图创建一个抽象类的实例或是试图从一个密封类派生出另外一个类,都会受到一个编译错误。
抽象类中可以包含一种特殊的方法即抽象方法。抽象方法只有方法签名,没有方法体。声明抽象方法的语法如下:
访问修饰符 abstract 返回值类型 方法名(参数列表);
抽象方法只能包含在抽象类中,而且派生类必须重写父类中的抽象方法。抽象方法不能不含方法体,甚至不能包含大括号{},必须在参数列表后面直接跟分号。
运行结果
[b] [/b]在定义类时可以使用abstract关键字声明这个类是抽象的。抽象类不能被实例化,即不能创建抽象类的实例。抽象类的主要作用是充当其他类的基类。
密封类的概念刚好与抽象类相对,这种类不能充当别的类的基类。“密封”的概念是不可以从这个类派生出别的类。在定义类时用sealed关键字指明类是密封的。
下面声明两个类,一个抽象类,一个密封类。
public abstract class Shape //抽象类 { //// } public sealed class Rectangle:Shape //密封类 { }
如果违反抽象类和密封类的规定,试图创建一个抽象类的实例或是试图从一个密封类派生出另外一个类,都会受到一个编译错误。
抽象类中可以包含一种特殊的方法即抽象方法。抽象方法只有方法签名,没有方法体。声明抽象方法的语法如下:
访问修饰符 abstract 返回值类型 方法名(参数列表);
抽象方法只能包含在抽象类中,而且派生类必须重写父类中的抽象方法。抽象方法不能不含方法体,甚至不能包含大括号{},必须在参数列表后面直接跟分号。
public abstract class Shape { public abstract double calculateArea(); } public sealed class Triangle:Shape { private double edge, high; public Triangle(double e, double h) { edge = e; high = h; } public override double calculateArea() { return edge * high / 2; } } public sealed class Rectangle:Shape { private double length, width; public Rectangle(double l, double w) { length = l; width = w; } public override double calculateArea() { return length * width; } } public sealed class Circle:Shape { private double radius; public Circle(double r) { radius = r; } public override double calculateArea() { return Math.PI * radius * radius; } } static void Main(string[] args) { Shape s; s = new Triangle(10, 15); printArea(s); s = new Rectangle(10, 15); printArea(s); s = new Circle(10); printArea(s); Console.ReadLine(); } static void printArea(Shape s) { Console.WriteLine("这个图形是: " + s.GetType().ToString()); Console.WriteLine("这个图形的面积是: " + s.calculateArea().ToString()); } }
运行结果
这个图形是: ShapeExample.Triangle 这个图形的面积是: 75 这个图形是: ShapeExample.Rectangle 这个图形的面积是: 150 这个图形是: ShapeExample.Circle 这个图形的面积是: 314.159265358979
相关文章推荐
- C# WCF简单入门图文教程(VS2010版)
- c# 操作Word总结
- C#简单实现文件上传功能
- C#操作Word (1)Word对象模型
- Ajax.dll的使用方法
- C#中out和ref之间的区别
- 本机电脑搜索,类似Everything
- C#简单邮件群发通用类
- C# 中DateTime的各种使用
- VS2013 自动添加头部注释 -C#开发
- 把源码放到服务器部署webservice调用出错 MVC C#
- ahjesus 单词单数-复数相互转换C#
- C#获取数组的行数和列数
- C#的SerialPort串口程序设计总结
- C#基本语法学习(五)
- Control.Invoke
- C# DateTime 日期加1天 减一天 加一月 减一月 等方法
- C# 托管资源 与 非托管资源
- C#有空编辑
- 转载:C#中&与&&的区别