1,虚方法 用Virtual修饰的方法叫虚方法 子类会继承父类中的虚方法并且可以正常使用,在子类中也可以重写(override)父类中的虚方法
2,
抽象类在定义一种蓝图,把约束所有子类都有该方法(名字相同,但实现动作不同)所以子类对同一个方法的实现都不同,可以在父类中定义该方法为抽象方法。
抽象方法 用abstract修饰的方法叫抽象方法 抽象方法没有实现只有定义
抽象类 用abstract修饰的类叫抽象类 抽象类中可以包含抽象方法,也可以包含非抽象方法 但抽象方法一定要写在抽象类中 抽象类不能被实例化
如果一个非抽象的类继承自一个抽象类,那么这个子类必须实现父类的抽象方法。
3,索引器的定义
修饰符 返回值类型 this【参数】{get{}set{}}
1. 例子:
虚方法的举例说明 例如在在animal类中有一个虚方法public Virtual void breathway(Console.writeline("用肺呼吸"))有两个类 继 承annimal这个类
定义个fish类
class animal
{
public Virtual void breathway(Console.writeline("用肺呼吸"))
}
class fish:animal
{
}
定义个dog类
class dog:animal
{
public override void breathway{ Console.writeline("用腮呼吸");}
}
在主程序中
static void Main(string[] args)
{ fish f=new fish();
f.breathway()'
dog d=new dog();
d.breathway();
}
在这个例子中 dog类直接调用annimal类中的breathway()方法但是fish类中 通过override 重写了breathway()方法所以会调用fish类中的breathway()方法
2:抽象类的例子
抽象类
有一个集合,里面有小孩,中年人,他们走路的方式都不相同,小孩(显示):爬着走 中年人:直立行走 从集合中取出各个对象,并调用其走的方法。试编程实现
首先定义个people 老年人 小孩类和中年人类都继承people类
abstract class people
{
string people;//人的类型
public string People
{
get { return people; }
set { people = value; }
}
private string peopleway;//走路的方式
public string Peopleway
{
get { return peopleway; }
set { peopleway = value; }
}
public void abstract walkway();
}
class youngpeople:people
{
public void override walkway()
{
Console.writeline("我是{0},我{1}", this.People, this.Peopleway);
}
}
class zhongpeople:people
{
public void override walkway()
{
Console.writeline("我是{0},我{1}", this.People, this.Peopleway);
}
}
static void Main(string[] args)
{
youngpeople yong = new youngpeople { People = "年轻人", Peopleway = "爬着走" };
zhongpeople zhong = new zhongpeople { People = "中年人", Peopleway = "直立行走" };
List<person> list = new List<person>();
list.Add(yong);
list.Add(zhong);
foreach (person p in list)
{
p.walkway();
}
Console.ReadLine();
}