C#虚方法的声明和使用实例教程

本文以实例形式演示了C#虚方法的声明与使用。实例内容主要包括:演示虚方法的声明和使用,定义虚方法进而求几何面积,用虚方法求原始图形的面积、正方形的面积、等边三角形的面积、圆形的面积等。

实现代码如下:

using System;
public class Graph
{
 protected double ParaVal;
 protected double pi = 3.1415926;
 public Graph ( double Para )
 {
 ParaVal = Para;
 }
 //定义虚方法:求面积
 public virtual double Area( )
 {
 return ParaVal;
 }
}
//图形的子类正方形
public class Square : Graph
{
 public Square( double Para ) : base ( Para )
 {
 }
 //重载正方形求面积的方法
 public override double Area( )
 {
 return ParaVal * ParaVal;
 }
}
//图形的子类等边三角形
public class EqTriangle : Graph
{
 public EqTriangle( double Para ) : base ( Para )
 {
 }
 //重载等边三角形求面积的方法
 public override double Area()
 {
 return ParaVal * ParaVal * Math.Sin( pi/3 ) / 2;
 }
}
//图形的子类圆
public class Circle : Graph
{
 public Circle( double Para ) : base( Para )
 {
 }
 //重载圆求面积的方法
 public override double Area( )
 {
 return pi * ParaVal * ParaVal;
 }
}
class Test
{
 public static void Main( )
 {
 double Length = 6;

 Graph Init = new Graph( Length );
 Graph Squa = new Square( Length );
 Graph Tria = new EqTriangle( Length );
 Graph Circ = new Circle( Length );
 Console.WriteLine("原始图形的面积是:\t{0}", Init.Area());
 Console.WriteLine("正方形的面积是:\t{0}", Squa.Area());
 Console.WriteLine("等边三角形的面积是:\t{0}", Tria.Area());
 Console.WriteLine("圆形的面积是: \t{0}", Circ.Area());
 }
}
(0)

相关推荐

  • C#中的高阶函数介绍

    介绍 我们都知道函数是程序中的基本模块,代码段.那高阶函数呢?听起来很好理解吧,就是函数的高阶(级)版本.它怎么高阶了呢?我们来看下它的基本定义: 1:函数自身接受一个或多个函数作为输入 2:函数自身能输出一个函数.  //函数生产函数   满足其中一个就可以称为高阶函数.高阶函数在函数式编程中大量应用.c#在3.0推出Lambda表达式后,也开始慢慢使用了.   目录 1:接受函数 2:输出函数 3:Currying(科里化) 一.接受函数 为了方便理解,都用了自定义. 代码中TakeWhil

  • C#中函数的创建和闭包的理解

    动态创建函数 大多数同学,都或多或少的使用过.回顾下c#中动态创建函数的进化: C# 1.0中: 复制代码 代码如下: public delegate string DynamicFunction(string name);   public static DynamicFunction GetDynamicFunction()   {       return GetName;   }   static string GetName(string name)   {       return

  • C#静态构造函数用法实例分析

    本文实例讲述了C#静态构造函数用法.分享给大家供大家参考.具体如下: 当我们想初始化一些静态变量的时候,就需要用到静态构造函数了.这个静态构造函数属于类,而不属于实例,就是说这个构造函数只会被执行一次,即:在创建第一个实例或引用任何静态成员之前,由.NET自动调用. 现在碰到这样一个场景:提供一个静态方法,这个静态方法在不同的地方使用,涉及到一个参数值不同,而其他内容都完全一致.如果是将静态方法的内容复制出来做成另外一个方法,代码冗余太多,做法不可取.使用静态构造函数处理静态变量,则可以尽最大程

  • C#虚函数用法实例分析

    本文实例讲述了C#虚函数用法.分享给大家供大家参考.具体如下: using System; namespace Test2 { class Plane { public double TopSpeed() { return 300.0D; } } class Jet : Plane { public double TopSpeed() { return 900.0D; } } class Airport { static void Main(string[] args) { Plane plan

  • c#中虚函数的相关使用方法

    若一个实例方法声明前带有virtual关键字,那么这个方法就是虚方法. 虚方法与非虚方法的最大不同是,虚方法的实现可以由派生类所取代,这种取代是通过方法的重写实现的(以后再讲)虚方法的特点:虚方法前不允许有static,abstract,或override修饰符虚方法不能是私有的,因此不能使用private修饰符虚方法的执行:我们知道一般函数在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,而虚函数在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时期对象

  • C#实现向函数传递不定参数的方法

    本文实例讲述了C#实现向函数传递不定参数的方法.分享给大家供大家参考.具体实现方法如下: using System; class Min{ public int MinVla(params int [] nums){ int m; if (nums.Length == 0){ Console.WriteLine("Error: no arguments."); return 0; } m = nums[0]; foreach ( int val in nums){ if ( val &

  • C#中异步回调函数用法实例

    本文实例讲述了C#中异步回调函数用法.分享给大家供大家参考.具体如下: static void Main(string[] args) { Func<string,string> showMessage = ShowMessage; //设置了回调函数Completed,不能有返回值 IAsyncResult result = showMessage.BeginInvoke("测试异步委托",new AsyncCallback(Completed),null); //半段异

  • C#中抽象方法与虚拟方法的区别

    学过C#的人应该都知道抽象方法与虚拟方法,而很多初学者对二者之间的区别并不是很了解.今天本文就来分析一下二者之间的区别.并附上实例加以说明.具体分析如下: 一.主要区别: 对于抽象方法,子类必须实现它. 对于虚拟方法,子类可以重写也可以不重写. 因此,两者约束不同 二.实例代码如下: /* 声明一个抽象类 * 1.抽象类中可以包含变量 * 2.抽象方法中无法声明方法体 */ abstract class AbsClass { string name; public abstract void D

  • C#虚方法的声明和使用实例教程

    本文以实例形式演示了C#虚方法的声明与使用.实例内容主要包括:演示虚方法的声明和使用,定义虚方法进而求几何面积,用虚方法求原始图形的面积.正方形的面积.等边三角形的面积.圆形的面积等. 实现代码如下: using System; public class Graph { protected double ParaVal; protected double pi = 3.1415926; public Graph ( double Para ) { ParaVal = Para; } //定义虚方

  • ThinkPHP中的create方法与自动令牌验证实例教程

    本文实例形式展示了ThinkPHP中的create方法与自动令牌验证的实现方法,具体步骤如下: 一.数据表结构 user表结构如下: id username password 二.view模板部分 \aoli\Home\Tpl\default\User\create.html页面如下: <form action="__URL__/addit" method="post"> <input type="text" name=&quo

  • Python中利用Scipy包的SIFT方法进行图片识别的实例教程

    scipy scipy包包含致力于科学计算中常见问题的各个工具箱.它的不同子模块相应于不同的应用.像插值,积分,优化,图像处理,,特殊函数等等. scipy可以与其它标准科学计算程序库进行比较,比如GSL(GNU C或C++科学计算库),或者Matlab工具箱.scipy是Python中科学计算程序的核心包;它用于有效地计算numpy矩阵,来让numpy和scipy协同工作. 在实现一个程序之前,值得检查下所需的数据处理方式是否已经在scipy中存在了.作为非专业程序员,科学家总是喜欢重新发明造

  • 基于python3 类的属性、方法、封装、继承实例讲解

    Python 类 Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法. 对象可以包含任意数量和类型的数据. python类与c++类相似,提供了类的封装,继承.多继承,构造函数.析构函数. 在python3中,所有类最顶层父类都是object类,与java类似,如果定义类的时候没有写出父类,则object类就是其直接父类. 类定义 类定义语法格式如下: class ClassName: <statement

  • jsp中变量及方法的声明与使用

    本文实例讲述了jsp中变量及方法的声明与使用.分享给大家供大家参考,具体如下: <%@ page language="java" import="java.util.*" contentType="text/html;charset=GBK"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://&q

  • 用JS中split方法实现彩色文字背景效果实例

    先来看看实现效果图 效果实现步骤: 1.获取要用到的元素: 2.声明一个数组变量(arrColor)存放颜色值: 3.给按钮添加点击事件: 4.获取文本框的value值,并用split方法把文本框的字符串值转换成数组(arr)存放: 5.循环取出存数组(arr)中的值并添加上span标签: 6.设置span标签的背景色:从数组(arrColor)循环取值: 7.把设定好的内容添加到div中: 效果完整代码: <!doctype html> <html> <head> &

  • C#警惕匿名方法造成的变量共享实例分析

    本文实例讲述了C#警惕匿名方法造成的变量共享.分享给大家供大家参考,具体如下: 匿名方法 匿名方法是.NET 2.0中引入的高级特性,"匿名"二字说明它可以把实现内联地写在一个方法中,从而形成一个委托对象,而不用有明确地方法名,例如: static void Test() { Action<string> action = delegate(string value) { Console.WriteLine(value); }; action("Hello Wor

  • Java8默认方法Default Methods原理及实例详解

    这篇文章主要介绍了Java8默认方法Default Methods原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java 8 引入了新的语言特性--默认方法(Default Methods). Default methods enable new functionality to be added to the interfaces of libraries and ensure binary compatibility wit

  • 详解C# 虚方法virtual

    在C++.Java等众多OOP语言里都可以看到virtual的身影,而C#作为一个完全面向对象的语言当然也不例外. 虚拟函数从C#的程序编译的角度来看,它和其它一般的函数有什么区别呢?一般函数在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,也就是写死了的!而虚函数在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时期对象实例来动态判断要调用的函数,其中那个申明时定义的类叫申明类,那个执行时实例化的类叫实例类. 如:飞禽 bird = new 麻雀();

  • C# 中的多态底层虚方法调用详情

    目录 一.C# 中的多态玩法 1. 一个简单的 C# 例子 2. 汇编代码分析 (1)eax,dword ptr [ebp-8] (2)eax,dword ptr [eax] (3)eax,dword ptr [eax+28h] (4)call dword ptr [eax+10h] 三.总结 前言: 本质上来说,CoreCLR 也是 C++ 写的,所以也逃不过用 虚表 来实现多态的玩法, 不过玩法也稍微复杂了一些,希望本篇对大家有帮助. 一.C# 中的多态玩法 1. 一个简单的 C# 例子 为

随机推荐