C#.NET中的定义类成员(方法)
/*
* Created by SharpDevelop.
* User: noo
* Date: 2009-8-16
* Time: 15:40
*
* 定义类成员(方法),所有的成员都有自己的访问级别,public,private(默认),internal(项目内部),protected(类、派生类)
* 公共关键字static(静态成员)
* 还有专有关键字virtual(虚方法,该方法可以在子类中重写),abstract(抽象方法,该方法只能写在抽象类中,
* 而且必须在非抽象的派生类中重写),override(在子类中重写一个基类方法,如果使用了override,也可以使用sealed指定在派生类中
* 不能对这个方法作进一步的修改),extern(方法定义放在其他地方)
*
* 关于抽象类请见abstractClass.cs
*
*/
using System ;
class methodA//普通类
{
public void method1()//普通方法
{
Console.WriteLine ("这是基类中的普通方法");
}
public static void method2()
{
Console.WriteLine ("这是基类中的静态方法");
}
public virtual void method3()//虚方法
{
Console.WriteLine ("这是基类中的第一个虚方法");
}
public virtual void method4()//虚方法
{
Console.WriteLine ("这是基类中的第二个虚方法");
}
}
class methodB:methodA
{
public override void method3()
{
Console.WriteLine ("先执行基类中的方法");
base.method3();//调用基类方法base关键字
Console.WriteLine ("这是在子类中重写基类第一个虚方法的一个方法");
}
public override sealed void method4()//指定在派生类中不能对这个方法作进一步的修改
{
Console.WriteLine ("这是在子类中重写基类第二个虚方法的一个方法");
}
public void myMethod()
{
Console.WriteLine ("这是子类自己的方法");
}
}
class Test
{
static void Main()
{
methodA a=new methodA ();
a.method4 ();//调用methodA中的方法
methodA aa=new methodB ();
aa.method4 ();//调用mehtodB中的方法
//a和aa都不能调用myMethod方法
methodB b=new methodB ();
b.method4 ();//调用mehtodB中的方法
b.myMethod ();//调用myMethod方法
}
}
* Created by SharpDevelop.
* User: noo
* Date: 2009-8-16
* Time: 15:40
*
* 定义类成员(方法),所有的成员都有自己的访问级别,public,private(默认),internal(项目内部),protected(类、派生类)
* 公共关键字static(静态成员)
* 还有专有关键字virtual(虚方法,该方法可以在子类中重写),abstract(抽象方法,该方法只能写在抽象类中,
* 而且必须在非抽象的派生类中重写),override(在子类中重写一个基类方法,如果使用了override,也可以使用sealed指定在派生类中
* 不能对这个方法作进一步的修改),extern(方法定义放在其他地方)
*
* 关于抽象类请见abstractClass.cs
*
*/
using System ;
class methodA//普通类
{
public void method1()//普通方法
{
Console.WriteLine ("这是基类中的普通方法");
}
public static void method2()
{
Console.WriteLine ("这是基类中的静态方法");
}
public virtual void method3()//虚方法
{
Console.WriteLine ("这是基类中的第一个虚方法");
}
public virtual void method4()//虚方法
{
Console.WriteLine ("这是基类中的第二个虚方法");
}
}
class methodB:methodA
{
public override void method3()
{
Console.WriteLine ("先执行基类中的方法");
base.method3();//调用基类方法base关键字
Console.WriteLine ("这是在子类中重写基类第一个虚方法的一个方法");
}
public override sealed void method4()//指定在派生类中不能对这个方法作进一步的修改
{
Console.WriteLine ("这是在子类中重写基类第二个虚方法的一个方法");
}
public void myMethod()
{
Console.WriteLine ("这是子类自己的方法");
}
}
class Test
{
static void Main()
{
methodA a=new methodA ();
a.method4 ();//调用methodA中的方法
methodA aa=new methodB ();
aa.method4 ();//调用mehtodB中的方法
//a和aa都不能调用myMethod方法
methodB b=new methodB ();
b.method4 ();//调用mehtodB中的方法
b.myMethod ();//调用myMethod方法
}
}