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()); } }
相关推荐
-
C#中的高阶函数介绍
介绍 我们都知道函数是程序中的基本模块,代码段.那高阶函数呢?听起来很好理解吧,就是函数的高阶(级)版本.它怎么高阶了呢?我们来看下它的基本定义: 1:函数自身接受一个或多个函数作为输入 2:函数自身能输出一个函数. //函数生产函数 满足其中一个就可以称为高阶函数.高阶函数在函数式编程中大量应用.c#在3.0推出Lambda表达式后,也开始慢慢使用了. 目录 1:接受函数 2:输出函数 3:Currying(科里化) 一.接受函数 为了方便理解,都用了自定义. 代码中TakeWhil
-
C#静态构造函数用法实例分析
本文实例讲述了C#静态构造函数用法.分享给大家供大家参考.具体如下: 当我们想初始化一些静态变量的时候,就需要用到静态构造函数了.这个静态构造函数属于类,而不属于实例,就是说这个构造函数只会被执行一次,即:在创建第一个实例或引用任何静态成员之前,由.NET自动调用. 现在碰到这样一个场景:提供一个静态方法,这个静态方法在不同的地方使用,涉及到一个参数值不同,而其他内容都完全一致.如果是将静态方法的内容复制出来做成另外一个方法,代码冗余太多,做法不可取.使用静态构造函数处理静态变量,则可以尽最大程
-
C#中异步回调函数用法实例
本文实例讲述了C#中异步回调函数用法.分享给大家供大家参考.具体如下: static void Main(string[] args) { Func<string,string> showMessage = ShowMessage; //设置了回调函数Completed,不能有返回值 IAsyncResult result = showMessage.BeginInvoke("测试异步委托",new AsyncCallback(Completed),null); //半段异
-
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#虚函数用法.分享给大家供大家参考.具体如下: 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#中抽象方法与虚拟方法的区别
学过C#的人应该都知道抽象方法与虚拟方法,而很多初学者对二者之间的区别并不是很了解.今天本文就来分析一下二者之间的区别.并附上实例加以说明.具体分析如下: 一.主要区别: 对于抽象方法,子类必须实现它. 对于虚拟方法,子类可以重写也可以不重写. 因此,两者约束不同 二.实例代码如下: /* 声明一个抽象类 * 1.抽象类中可以包含变量 * 2.抽象方法中无法声明方法体 */ abstract class AbsClass { string name; public abstract void D
-
C#中函数的创建和闭包的理解
动态创建函数 大多数同学,都或多或少的使用过.回顾下c#中动态创建函数的进化: C# 1.0中: 复制代码 代码如下: public delegate string DynamicFunction(string name); public static DynamicFunction GetDynamicFunction() { return GetName; } static string GetName(string name) { return
-
c#中虚函数的相关使用方法
若一个实例方法声明前带有virtual关键字,那么这个方法就是虚方法. 虚方法与非虚方法的最大不同是,虚方法的实现可以由派生类所取代,这种取代是通过方法的重写实现的(以后再讲)虚方法的特点:虚方法前不允许有static,abstract,或override修饰符虚方法不能是私有的,因此不能使用private修饰符虚方法的执行:我们知道一般函数在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,而虚函数在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时期对象
-
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# 例子 为
随机推荐
- iOS 进度条、加载、安装动画的简单实现
- js Abba逆向前瞻正则匹配实例
- ASP.NET中母版页和shtml实例入门
- Ubuntu不进入休眠模式的方法
- jQuery使用手册之二 DOM操作
- Ionic2创建App启动页左右滑动欢迎界面
- vbscript脚本编程教程2利用fso来进行文件操作
- C++之异常处理详解
- java中常用的字符串的比较方法(两种)
- Asp.net在ashx文件中处理Session问题解决方法
- 详解ASP.NET MVC的筛选器
- php使用Session和文件统计在线人数
- linux下备份MYSQL数据库的方法
- Android实现TextView两端对齐的方法
- 区分IE6,IE7,firefox的CSS hack
- PHP扩展程序实现守护进程
- PowerShell中使用正则表达式匹配字符串实例
- DevExpress GridControl实现根据RowIndex和VisibleColumnsIndex来获取单元格值
- oracle单库彻底删除干净的执行步骤
- jquery,js简单实现类似Angular.js双向绑定