目录
一、虚方法和重写方法:
namespace _15.多态
{
class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.Show();
Teacher t = new Teacher();
t.Name = "卡卡西";
t.Age = 30;
t.Gender = '男';
t.Show();
Console.ReadKey();
}
public class Person
{
//public Person(string name, char gender, int age) //构造函数
//{
// this._name = name;
// this._gender = gender;
// this._age = age;
//}
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private char _gender;
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
public virtual void Show() //虚方法关键字---virtual
{
Console.WriteLine("我是援军别害怕");
}
}
public class Teacher : Person //继承父类person
{
public override void Show() //overrider的作用是重写父类的方法,为了避免瑕疵不报绿线对应父类中的virtual
{
Console.WriteLine( "我是{0},今年{1}岁,是{2}老师",this.Name ,this.Age ,this.Gender);
}
}
}
}
运行效果
二、抽象方法抽象类
namespace _16.多态_抽象方法
{
class Program
{
static void Main(string[] args)
{
Pig pig = new Pig();
pig.Shout();
Console.ReadKey();
}
public abstract class Animal //这里也要添加abstract
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private char _gender;
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
public abstract void Shout(); //抽象方法,没有方法体
}
public class Pig : Animal
{
public override void Shout() //要继承上边的抽象类,里边的抽象方法必须要override重写
{
Console.WriteLine("哼哼叫");
}
}
}
}
什么时候用抽象方法?
方法里边没有抽象体,不需要对其他事物进行描述,但是其他类都有这个行为,这个时候采用抽象方法。
抽象方法无法实例化,抽象类只能用作基类
三、接口
新创建类,在类中写入定义接口
interface IFly
{
void IFly();
}
namespace _18.多态_接口
{
class Program
{
static void Main(string[] args)
{
//Teacher t = new Teacher();
//t.IFly();
//Console.ReadKey();
IFly ifly = new Student();//多态的体验形式
ifly.IFly();
Console.ReadKey();
}
}
public class Person
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private char _gender;
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
}
public class Teacher : Person, IFly
{
public void Say()
{
Console.WriteLine("hellow,我是老师");
}
public void IFly()
{
Console.WriteLine("我会飞");
}
}
public class Student : IFly
{
public void SayHello()
{
Console.WriteLine("我是学生");
}
public void IFly()
{
Console.WriteLine("我也会飞");
}
}
}