19;;接口
//接口的作用:因为在C#中不允许使用C++的多重继承,故而使用接口,实现此功能(类似于输入输出设备,提供一种接口的作用,却不管输入输出为何内容)
//在C#中,接口是声明类具有的方法和成员,自身不能被实例化,只能被继承的特殊的“类”。其用在描述,而实现则有具体的派生类来执行,一个类可以直接继承多个接口。
//不可包含构造函数 析构函数 常量 字段运算符等。
//默认所有的接口都是共有的
//故而在声明接口时,加任何的限制符都是错误的
interface myInterface
{
string STR//接口中的属性
{
get;
set;//如上在可读可写
}
void outMethod();
}
class InheritInterface:myInterface
{
string str="21天学通C#";
public string STR//详细设置属性
{
get
{
return str;
}
set
{
str=value;
}
}
public void outMethod()//具体方法的实现
{
Console.WriteLine(this.STR);
}
}
class Program
{
static void Main()
{
InheritInterface myZhou=new InheritInterface();
myZhou.outMethod();
Console.Read();
}
}
20;;抽象类
namespace ConsoleApplication2
{
//抽象类
//和接口有相似之处,本身不能直接被实例化,并且没有代码体,其方法须在在其派生类中才可以实现
//抽象类,其实就是一个不完整的类,需要继承类补充和实现具体的方法
//关键字abstract
public abstract class MaxHoan
{
public abstract void MyInfo();//抽象方法:抽象类中只能包含抽象方法
}
public class MinHoan : MaxHoan
{
public override void MyInfo()//override:重写功能
{
Console.WriteLine("我是被重写的抽象类中的抽象方法myInfo()");
}
}
public class Program
{
static void Main(string[] args)
{
MinHoan zhou = new MinHoan();
zhou.MyInfo();
Console.Read();
}
}
}
21;;
//域,也叫成员变量,它可以用来保存累的各种信息,就是简单的成员变量
//分:静态域:属于类:用static声明
// 实例域:属于对象,与之相反
//域的用途:其实就是一种变量,所以和声明变量是一样的,声明时可以用的修饰符有New protected internal private static readonly
//属性:是一种用来访问对象的特殊成员
//属性的用途:访问类或者对象特性的成员,属性是成员的扩展,他们都是关联类型的命名成员,所以访问成员和属性的语法是完全相同的。
//属性不同于成员的特点:属性不表示具体的存储位置,其提供了一种机制,它把读取和写入对象的某些特性域与一些操作关联起来,如get set,使得程序员可以像使用公共数据成员一样使用属性
22;;匿名方法
namespace ConsoleApplication2
{
//匿名方法:就是将代码块当做参数使用,使代码对于委托的实例很直接、很便利,以减少实例化委托对系统资源的开销,匿名方法还共享了本地语句包含的而函数成员访问权限
delegate void Writer(string s);//定义一个委托
class C56
{
static void NameMethod(string k)//委托所调用的命名方法
{
Console.WriteLine(k);
}
static void Main()
{
Writer w=delegate(string k)//委托类调用匿名方法
{
Console.WriteLine(k);
}
w("调用了匿名方法。");
Console.WriteLine();
w=new Writer(NameMethod);
w("调用了命名方法。");
Console.Read();
}
}
}
23;;// 构造函数
namespace ConsoleApplication2
{
class demoClass
{
public double x, y;
public demoClass()
{
this.x = 0;
this.y = 0;
}
public demoClass(double a,double b)
{
this.x = a;
this.y = b;
}
public void show()
{
Console.WriteLine("x={0}",x);
Console.WriteLine("y={0}", y);
}
}
class Program
{
static void Main(string[] args)
{
demoClass zhou = new demoClass();
zhou.show();
demoClass zhou1 = new demoClass(1.2, 3.4);
zhou1.show();
Console.Read();
}
}
24;;
//接口的实现
namespace ConsoleApplication2
{
interface demoInter
{
void fdShow();
}
public class myClass : demoInter
{
public void fdShow()
{
Console.WriteLine("实现了接口的功能");
}
}
class C59
{
static void Main()
{
myClass zhou = new myClass();
zhou.fdShow();
Console.Read();
}
}
}
25;;
namespace ConsoleApplication2
{
delegate void MyDelegate(string s);
class myClass
{
public static void hello(string s)
{
Console.WriteLine("您好,{0}",s);
}
public static void goodbye(string s)
{
Console.WriteLine("再见,{0}",s);
}
}
class program
{
static void Main(string [] args)
{
MyDelegate a,b,c,d;
a=myClass.hello;
Console.WriteLine("调用委托变量a:");
a("a");
Console.WriteLine("调用委托变量b:");
b = myClass.goodbye;
b("b");
c=a+b;
Console.WriteLine("调用委托变量c:");
c("c=a+b");
d=c-a;
Console.WriteLine("调用委托变量d:");
d("d=c-a");
Console.Read();
}
}
}
26;;page对象简介
public partial class _Default : System.Web.UI.Page
{
//page:Web窗体的容器,其他的对象是在它之上进行工作的。
//作用:初始化和加载等重要的功能
//其实就是Web应用程序的ASPX文件
//ASP.net页面在运行时,会按一定的顺序激发这些事件,它们的顺序如下:
//Page_Init:用于初始化所有值或程序
//Page_Load:页面加载事件
//Page_DataBind:在整个页面级别调用DataBind方法时,将会引发DateBind事件
//Page_Unload:完成页面呈现或者加载之后,将激发Unload事件
//Page_Error:如页面处理过程中出现一些错误,就会激发Error事件,并且为这些错误事件提供处理方法
//初始化:即运行Init事件:其他事件的基础
protected void Page_Load(object sender, EventArgs e)
{
//ListBox1.Items.Add("周红安");
//ListBox1.Items.Add("周晓明");
//ListBox1.Items.Add("杨阳");
//上述如果存在,则会重复载入,避免方法
if (!IsPostBack)//如用IsPostBack则只加载一次
{
ListBox1.Items.Add("周红安");
ListBox1.Items.Add("周晓明");
ListBox1.Items.Add("杨阳");
}
}
protected void Page_Init(Object sender, EventArgs e)//最先初始化
{
ListBox1.Items.Add("周红安");
ListBox1.Items.Add("周晓明");
ListBox1.Items.Add("杨阳");
}
//防止Init和Load两事件重复加载,可使用
protected void Button1_Click(object sender, EventArgs e)
{
Button Button1 = (Button)Page.FindControl("Button1");//查询Button1控件的信息,并以(Button1.text)字符串形式输出
TextBox1.Text=(Button1.Text);