方法
1.把可以重複執行完成某一件事情的代碼寫成一個方法,可以減少代碼的冗餘量。函數就是專門做事情,我們提供一些數據,執行完以後給我們執行結果,提供的數據叫參數,返回的執行結果叫返回值。像ATM機,用來取錢,提供取錢的金額就是參數,金錢取出成功就是返回值。
2.方法也可以叫函數,每一個程序只能有一個主方法(主函數),但是可以有多個方法
3.方法使用需要先定義
方法的定義
[訪問修飾符] static 返回值(的類型) 方法名([參數列表])
{
方法體
}
1.訪問修飾符:可以限制這個方法的可見性
2.返回類型:兩種情況(函數可以有返回值,也可以沒有返回值)
(1).函數沒有返回值:用void代表這個方法不需要返回值,方法體頁不需要寫return語句,寫return語句也不會報錯。
(2).函數有返回值:像上述代碼一樣,方法體中一定要寫return語句,否則會報錯。return可以立即退出方法。
3.方法名:首字母需要大寫,方法名開頭大寫,參數名開頭小寫,參數名、變量名要有意義
4.參數列表:用圓括號括起來,一個方法可以有參數,也可以沒有參數,可以有一個參數,也可以有多個參數,參數頁可以是一個數組。
//1.第一種:此方法最簡單的方法無參數無返回值
public static void Show() //此方法是無返回值,無參數的方法
{
Console.WriteLine("啦啦啦,我是快樂的小畫家");
}
//2.第二種:有參數,有返回值,上面的判斷輸入內容是否爲字符串就屬於這種
public static int IsNumber(string strNumber)
{
}
//3.第三種:無參數,有返回值
string str=Console.ReadLine(); //無參數,有返回值
//4.第四種:無返回值
Console.WriteLine(); //無返回值,參數可有可無
方法的調用
對於靜態方法,調用有兩種方式
1.如果在同一個類中,直接寫名字調用就可以了
2.或者類名.方法名();
方法的重載
方法重載是指方法名相同,單參數的數據類型,個數或順序不同的方法。方法重載和返回值無關
方法的重寫
方法的重寫和方法的重載不一樣,方法的重寫是在子類繼承父類的時候,重寫父類中方的方法
父類:動物
子類:貓狗牛
有共同的方法叫,但是不能直接在父類中直接定義出叫聲,因爲子類狗的方法的汪汪,子類牛的方法是哞哞,這時候就可以將父類的方法重寫。
重寫父類的方法,在父類的方法中加virtual關鍵字,將方法定義爲多態,有virtual關鍵字修飾的爲“虛方法”在子類中加上override關鍵字。
Animal[]animal = new Animal[5];
Random r = new Random();
for (int i = 0; i < animal.Length ; i++)
{
int num = r.Next(1, 6);
switch (num)
{
case 1:animal[i] = new Pig("小豬");break;
case 2: animal[i] = new Dog("小狗"); break;
case 3: animal[i] = new Cow("小牛"); break;
case 4: animal[i] = new Cat("小貓"); break;
}
}
for (int i = 0; i < animal.Length; i++)
{
animal[i].Shout();
}
Console.ReadKey();
}
}
public abstract class Animal
{
public Animal(string name )
{
this._name = name;
}
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
public abstract void Shout();
}
public class Pig : Animal
{
public Pig(string name) : base(name)
{
}
public override void Shout()
{
Console.WriteLine("{0}哼哼",this.Name);
}
}
public class Dog : Animal
{
public Dog(string name) : base(name)
{
}
public override void Shout()
{
Console.WriteLine("{0}汪汪",this.Name);
}
}
public class Cow : Animal
{
public Cow(string name) : base(name)
{
}
public override void Shout()
{
Console.WriteLine("{0}哞哞", this.Name);
}
}
public class Cat : Animal
{
public Cat(string name) : base(name)
{
}
public override void Shout()
{
Console.WriteLine("{0}喵喵", this.Name);
}
}