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: www.2cto.com
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();
}
}
}
運行結果: