摘要: using System;using System.Collections.Generic;using System.Linq;using System.Text;//接口//1.接口是C#基于组件编程的重要部分//2.接口使你能够在独立的代码段之间创建一致的行为契约(更面向对象、更灵活)//3.接口基本上是一个抽象类,其中只声明了纯虚方法和C#成员//4.接口中可以包含方法、特性、索引器和事件,但这些都不是在接口本身中实现的//5.不能在接口成员(方法、事件、索引、属性)上指定访问修饰符namespace InterfaceDemo{ public delegate void testEve 阅读全文
posted @ 2011-03-15 09:49 焦涛 阅读(248) 评论(0) 推荐(0)
摘要: using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace AbstractDemo{ public abstract class Sharp { //1.抽象方法,不含主体 //2.必须由派生类以override方式实现此方法 //3.抽象方法所在类必须为抽象类 public abstract void GetArea(); } public class Circle : Sharp { private double r; public Circle(double r) 阅读全文
posted @ 2011-03-10 14:58 焦涛 阅读(313) 评论(0) 推荐(0)
摘要: 首先理解一下什么叫多态。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。多态性通过派生类覆写基类中的虚函数型方法来实现。多态性分为两种,一种是编译时的多态性,一种是运行时的多态性。编译时的多态性:编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。运行时的多态性:运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作。C#中运行时的多态性是通过覆写虚成员实现。下面我们来分别说明一下多态中涉及到的四个概念:重载,覆写,虚方法和抽象方法。重载和覆写的区别:重载类中定义的方法的不同版本 pub 阅读全文
posted @ 2011-03-10 14:54 焦涛 阅读(187) 评论(0) 推荐(0)
摘要: using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace InheritanceApp{ class Employee { public string name; public Employee(string name) { this.name = name; } public virtual void CalculatePay() { Console.WriteLine("Employee.CalculatePay called for {0}", 阅读全文
posted @ 2011-03-09 22:43 焦涛 阅读(305) 评论(0) 推荐(0)
摘要: using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace InheritanceApp{ class Employee { public string name; public Employee(string name) { this.name = name; } public void CalculatePay() { Console.WriteLine("Employee.CalculatePay called for {0}",name); } 阅读全文
posted @ 2011-03-09 21:29 焦涛 阅读(875) 评论(0) 推荐(0)
摘要: using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace InheritanceApp{ class Employee { public void CalculatePay() { Console.WriteLine("Employee.CalculatePay()"); } } class SalariedEmployee : Employee { //如果去掉new出现如下警告 //警告:“InheritanceApp.SalariedEmplo 阅读全文
posted @ 2011-03-09 20:46 焦涛 阅读(755) 评论(0) 推荐(0)
摘要: using System;using System.Collections.Generic;using System.Linq;using System.Text;//封闭类不能派生子类//原因:封闭类不能被作为基类使用//好处:防止意外的派生的操作//注意:抽象类不能作为封闭类使用(抽象类本质决定了他们必须被作为基类使用)namespace InheritanceApp{ sealed class Point { public Point(int x, int y) { X = x; Y = y; } public int X; public int Y; } //语法错误:无法从密封类型P 阅读全文
posted @ 2011-03-09 19:51 焦涛 阅读(1973) 评论(0) 推荐(0)
摘要: //继承 //1.C#中实现多继承效果的唯一办法是通过使用接口 class Control { } interface ISerializable { } interface IDataBound { } //MyFancyGrid继承自Control实现了ISerializable和IDataBound接口 class MyFancyGrid : Control, ISerializable, IDataBound { } 下面做法是错误的。 阅读全文
posted @ 2011-03-09 19:41 焦涛 阅读(562) 评论(0) 推荐(0)
摘要: 1、排序方法 将被排序的记录数组R[1..n-1]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。(1)初始 R[1..n-1]为无序区。(2)第一趟扫描 从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置。即依次比较(R[n-1],R[n-2]),(R[n-2],R[n-3]),…,(R[1],R[0]);对于每对气泡(R[j+1],R[j]),若R[j+1] 阅读全文
posted @ 2011-03-07 11:14 焦涛 阅读(281) 评论(0) 推荐(0)
摘要: using System;using System.Collections.Generic;using System.Linq;using System.Text;//继承//1、继承本质:将共有的功能放在基类中,然后从这个基类派生出其他类,并且重定义或修改继承的基类行为。//2、派生类可以继承基类中public、protected、internal的几乎所有成员,但构造器不能被继承namespace InheritanceApp{ //假设需要一个用于处理Microsoft SQL Server数据库和Oracle数据类。因为这两个数据库在某些方面有差异,所以希望为每种数据建立一个类。 // 阅读全文
posted @ 2011-03-06 22:24 焦涛 阅读(250) 评论(0) 推荐(0)