方法修饰符:
static
new
virtual
override
sealed
abstract
extern
C#方法的参数类型有五种类型:
值参数
引用参数(用ref修饰符修饰)
对象类型参数(传递地址)
输出参数(用out修饰符定义)
参数数组(用params修饰符修饰)
方法重载:指一个类有多个方法,名字相同,但方法的参数列表不一样。
实例成员和类成员
this关键字
继承与派生
base关键字:关键字this指类的实例自己,而base关键字指父类。作用有两个:
1.调用父类的构造函数
2.调用父类的方法
方法覆盖与多态性
方法覆盖(Override)是指在派生类中重写基类的方法。
多态性是指不同的对象收到相同的消息会产生不同的动作。
sealed修饰符
在C#中,sealed修饰符表示密封,用于类时,表示该类不能被继承;用于方法和属性,表示该方法或属性不能被重写。
1.不能和abstract同时使用;2.使用sealed修饰符的方法或属性必须是基类的相应的虚成员,和override关键字一起使用。
抽象类与接口
抽象方法只有声明,没有实现。
抽象类可以包含或不包含抽象方法,包含抽象方法的类必须定义成抽象类。
抽象类不能被实例化,可以被继承,但不能定义成sealed类。
继承抽象类的类必须实现抽象类的抽象方法,否则也必须定义成抽象类。
一个类实现某个接口,但没有实现该接口的所有方法,这个类必须定义成抽象类
抽象方法不能使用virtual修饰。
接口
一个接口定义一个协定,在某种程度上接口像一个抽象类,接口可以定义方法、属性、事件、和索引。但是不提供成员的实现,接口成员总是公有的,接口可以使用多重继承,一个接口继承一个或多个基接口。
接口可以由类实现。实现接口的标识符出现在类的基列表中。
1.实现接口的类都必须提供接口中所声明的抽象成员的定义,否则该类型必须定义为抽象类。
2.当一个类实现多个接口时,接口之间用逗号分隔。
3.类的基列表同时包含基类和接口时,列表中首先出现的是基类。
{
interface IControl
{
void Paint();
}
interface ITextBox : IControl
{
void SetText(String text);
}
interface IListBox : IControl
{
void SetItems(String[] items);
}
interface IComboBox : ITextBox, IListBox { }
interface IDataBind
{
void bind();
}
class Control : IControl
{
public void Paint()
{
Console.WriteLine("运行了Paint");
}
}
class EditBox : Control, ITextBox
{
public void SetText(string text)
{
Console.WriteLine("运行了SetText");
}
public void Bind()
{
Console.WriteLine("运行了Bind");
}
class Program
{
static void Main(string[] args)
{
EditBox e = new EditBox();
e.Paint();
e.SetText("abc");
e.Bind();
Console.ReadLine();
}
}
}
}
委托:
委托就是一种包装方法调用的类型。就像类型一样,可以在方法之间传递委托实例,并且可以像方法一样调用委托实例。属于引用类型。它引用方法,引用方法的过程叫做绑定。委托主要用于.NET Framework中的事件处理程序和回调函数,所有委托都是从System.Delegate继承而来的,并且有一个调用列表,这是在调用委托时所执行的方法的一个链接列表。
{
public delegate void GreetingDelegate(string name);
class Program
{
private static void EnglishGreeting(string name)
{
Console.WriteLine("Morning," + name);
}
private static void ChineseGreeting(string name)
{
Console.WriteLine("早上好," + name);
}
//注意这个方法,它接受一个GreetingDelegate类型的方法作为参数
private static void GreetPeople(string name, GreetingDelegate MakeGreeting)
{
MakeGreeting(name);
}
static void Main(string[] args)
{
GreetPeople("Jimmy Zhang", EnglishGreeting);
GreetPeople("张子阳", ChineseGreeting);
Console.ReadLine();
}
}
}
事件:
事件是对象发送的消息以发信号通知操作的发生。操作可能是由用户交互(例如鼠标单击)引起的,也可能是由某些其他的程序逻辑触发的。引发事件的对象叫做事件产生对象。捕获事件并对其做出响应的对象叫做事件接受对象。两者之间存在一个媒介,这个媒介就是委托。