方法
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);
}
}