1,静态方法和非静态方法的区别:
例子1:
(1)静态方法
namespace 静态方法
{
class Program
{
public static int Add(int x, int y) //声明一个静态方法
{
return x + y;
}
static void Main(string[] args)
{
Console.WriteLine("学敏,咱们的计算结果是: " + Program.Add(2, 4)); //使用类名调用静态方法
}
}
}
运行结果:
(2)非静态方法
namespace 非静态方法
{
class Program
{
public int Add(int x, int y) //声明一个非静态方法
{
return x + y;
}
static void Main(string[] args)
{
Program xuemin = new Program(); //实例化类Program
Console.WriteLine("学敏,计算结果为 " + xuemin.Add(2, 4)); //使用实例化对象xuemin调用定义的非静态方法
}
}
}
运行结果:
2,方法重载和方法重写的不同:
例子2:
(1)方法重载
namespace 方法重载
{
class Program
{
public static int Add(int x, int y) //定义静态方法Add,返回值为int类型,两个int类型参数
{
return x + y;
}
public double Add(int x, double y) //方法Add,两个参数,一个double类型,一个int类型
{
return x + y;
}
public int Add(int x, int y, int z) //方法Add,三个参数,均为int类型
{
return x + y + z;
}
static void Main(string[] args)
{
Program xuemin = new Program();
int x=3;
int y1=4;
double y2 = 3.2;
int z=5;
Console.WriteLine("学敏,以下是计算结果,请注意查收!!"+"\n");
//根据传入的参数类型和个数的不同调用不同的Add重载方法
Console .WriteLine ("x"+"+"+"y1"+"="+Program .Add (x ,y1 ));
Console .WriteLine ("x"+"+"+"y2"+"="+xuemin .Add (x ,y2 ));
Console .WriteLine ("x"+"+"+"y1"+"+"+"z"+"="+xuemin .Add (x ,y1,z ));
}
}
}
运行结果:
(2)方法重写
见例子3就有方法重写
3,通过例子3能掌握:
1,抽象类不能直接实例化,抽象类如何实例化?—先实例化派生类,然后使用派生类对象实例化抽象类
2,抽象类和抽象类的使用:
例子3:声明一个抽象类myClass,该抽象类中声明了两个属性和一个方法,其中为两个属性提供了具体实现,方法为抽象方法。然后声明一个派生类DriveClass,继承自myClass,在DriveClass派生类中重写myClass中的抽象方法,并提供具体实现。最后在主程序类Program的Main方法中实例化DriveClass派生类的一个对象,使用该对象实例化抽象类,并使用抽象类对象访问抽象类中的属性和派生类中重写的方法。
namespace 抽象类和抽象方法的使用
{
abstract class myClass //声明一个抽象类myClass
{
string id;
string name;
public string ID //编号属性ID
{
get
{ return id; }
set
{ id = value; }
}
public string Name //姓名属性Name
{
get
{ return name; }
set
{ name = value; }
}
public abstract void ShowInfo(); //声明一个抽象方法ShowInfo
}
class DriveClass : myClass //声明一个派生类DriveClass,派生自类myClass
{
public override void ShowInfo() //派生类DriveClass重写基类myClass中的抽象方法ShowInfo
{
Console.WriteLine(ID + " " + Name);
}
}
class Program
{
static void Main(string[] args)
{
DriveClass driveclass = new DriveClass(); //实例化派生类DriveClass
myClass xuemin = driveclass; //使用派生类对象driveclass来实例化抽象类
xuemin.ID = "廊坊师范学院001号";
xuemin.Name = "韩学敏";
xuemin.ShowInfo(); //抽象类对象调用派生类中的方法
Console.WriteLine("\n");
}
}
}
运行结果:
4,密封类和密封方法的使用
例子4:
namespace 密封类和密封方法
{
class myClass1 //声明类myClass1
{
public virtual void ShowInfo() //虚方法ShowInfo
{
}
}
sealed class myClass2:myClass1 //声明密封类myClass2,并且继承自myClass1
{
string id=" ";
string name=" ";
public string ID //编号属性ID
{
get
{ return id ;}
set
{id =value ;}
}
public string Name //姓名属性Name
{
get
{ return name ;}
set
{name =value ;}
}
public sealed override void ShowInfo() //密封并重写基类myClass1中的ShowInfo方法
{
Console.WriteLine(ID + " " + Name);
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("学敏,调用ShowInfo方法后的结果: "+"\n");
myClass2 xuemin = new myClass2(); //实例化密封类myClass2
xuemin .ID ="廊坊师范学院001号";
xuemin.Name ="韩学敏";
xuemin.ShowInfo(); //调用密封类myClass2中的密封方法
myClass2 xueyang = new myClass2();
xueyang.ID = "廊坊师范学院002号";
xueyang.Name = "韩学杨";
xueyang.ShowInfo();
}
}
}
运行结果: