class Program
{
static void Main(string[] args)
{
//1、有一个交通工具类Vehicle,
//将它作为基类派生小车类Car、卡车类Truck和轮船类Boat,
//定义这些类并定义一个虚函数用来显示各类信息。
//虚函数就是重写
Vehicle car = new Car();
//car.fun() 子类调用不了自己的普通方法 除非重写;
Vehicle truck = new Truck();
Vehicle boat = new Boat();
//car.ZuoYong();
//truck.ZuoYong();
//boat.ZuoYong();
//2、定义猫科动物Animal类,由其派生出猫类(Cat)和豹类(Leopard),
//二者都包含虚函数 Sound( ),
//要求根据派生类对象的不同调用各自重载后的成员函数(向上转型)。
Animal cat = new Cat();
cat.Catch();
cat.Catch("鱼");
Animal leoprad = new Leopard();
leoprad.Catch();
leoprad.Catch("喜羊羊");
}
}
class Animal
{
public Animal()
{
// this.Catch();
}
//重载必须写在同一个类中
public void Catch()
{
Console.WriteLine("捕获行为!");
}
public void Catch(string s)
{
Console.WriteLine("捕获了:" + s);
}
}
class Boat:Vehicle
{
public Boat()
{
this.ZuoYong();
}
public override void ZuoYong()
{
Console.WriteLine("子类--轮船的主要作用是在水上行走!");
}
}
class Car:Vehicle
{
public Car()
{
this.ZuoYong();
}
public override void ZuoYong()
{
Console.WriteLine("子类-小汽车的主要功能是载人!");
}
public void fun()//自身的方法 如果由基类派生出子类;类对象名调用不了自己的方法;如:Vechicle car=new Car();
{
Console.WriteLine("子类自己的普通方法!");
}
}
class Cat:Animal
{
}
class Leopard:Animal
{
}
class Truck:Vehicle
{
public Truck()
{
this.ZuoYong();
}
public override void ZuoYong()
{
Console.WriteLine("子类-卡车的主要作用是运输货物!");
}
}
class Vehicle
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public virtual void ZuoYong() {
Console.WriteLine("父类-交通工具主要是运输!");
}
public Vehicle() {
//this.ZuoYong();
}
}
网友评论