您的位置:首页 > 其它

继承与多态的锦集

2016-04-10 18:46 363 查看
继承

首先我们了解一下继承的作用:移除类的冗余代码

下面是代码展示:

我们先建出一个main函数,一个父类(Exec)和两个子类(PM,CM)

public  class Exec
{
public int Id { get; set; }//编号
public string Name { get; set; }//姓名
public int Age { get; set; }//年龄

public Exec()//无参构造
{
}
public Exec(int id,string name,int age)//有参构造
{
this.Id = id;
this.Name = name;
this.Age = age;
}
public void say()//创建say()方法
{
Console.WriteLine("我是父类的say方法,我是{0},我{1岁了}");
}
}


public class CM:Exec
{
public CM()
{
}
      
public CM(int id,string name,int age):base(id,name,age)  //base(id,name,age)调用父类的带参构造
{
       
}

public void say()
{
Console.WriteLine("我是父类的say方法,我是{0},我{1}岁了", Name, Age);
}
}


public  class PM:Exec
{
public PM()
{
}

public PM(int id,string name,int age):base(id,name,age)
{

}

public void say()
{
Console.WriteLine("我是父类的say方法,我是{0},我{1}岁了",Name,Age);
}

}


class Program
{
static void Main(string[] args)
{
PM pm = new PM(001,"经理",45);//创建一个经理对象
pm.say();//调用PM()子类的say()方法
CM cm = new CM(002,"员工",25);//创建一个员工对象
cm.say();//调用CM()子类的say()方法
Console.ReadKey();//让屏幕停留

}
}


完成效果图













多态

多态的作用:解决继承带来的问题

我们先通过一段代码来了解一下多态的使用,首先我们要创建出main函数,一个父类(person),三个子类(Korea,Chinese,American)

public class Person
{
public int age;
public virtual void Hello()
{

}
}


public class American:Person
{
public override void Hello()
{
Console.WriteLine("Hello");
}
}


public class Chinese:Person
{
public override void Hello()
{
Console.WriteLine("你好");
}
}


public class Korea:Person
{
public override void Hello()
{
base.age=12;
Console.WriteLine("金喜善打招呼");
}
}


class Program
{
static void Main(string[] args)
{

Chinese chinese=new Chinese();
American american=new American();
Korea korea=new Korea();
        //多态的调用
Person[] pers=
{
chinese,american,korea
};

foreach (Person item in pers)//循环遍历
{
item.Hello();
}
Console.ReadLine();

}
}


完成效果图



里面用到的override,与virtal关键字是多态里面的常用方法

virtal关键字修饰方法称为虚方法。虚方法语法如下

语法

访问修饰符 virtual 返回类型 方法名()

{

  //方法体

}

override关键字来修饰的方法,称为方法的重写。虚方法可以被重写。

语法

访问修饰符 override 返回类型 方法名()

{

  //方法名

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: