c#简单使用抽象类(第一次随笔)
//第一次写随笔,c#我也才入门,想把自己理解到的东西写下来,以后回过来看的时候可能也觉得自己当时挺白痴的。也请大家帮忙指出不足之处。
//比如写一个动物叫的方法,鸭子嘎嘎的叫,马儿萌萌的叫,我们就需要抽象出一个动物类,在动物类里面写一个抽象方法,然后在子类里面重写父类的方法。
1 abstract class Animal //抽象出来的父类 2 { 3 private string _name; //字段的作用是存储数据 4 5 public string Name //属性的作用是保护字段,与外界打交流都是通过属性,属性其实也是两个方法,通过set方法进行存值,通过get方法进行取值 6 { 7 get { return _name; } 8 set { _name = value; } 9 } 10 11 private int _age; 12 13 public int Age 14 { 15 get { return _age; } 16 set { _age = value; } 17 } 18 public void eat() //动物吃的方法都是一样的,在父类写了,在子类可以直接调用 19 { 20 Console.WriteLine("动物吃的方法"); 21 } 22 public abstract void SayHello(); //写一个动物打招呼的抽象方法 23 public abstract void Call(); //动物叫的抽象方法 24 25 }
//Duck类
1 class Duck:Animal //鸭子类,继承于动物类 2 { 3 4 public Duck(string name,int age) //继承了父类的属性,在Duck类的构造函数中对属性赋值,会执行属性的set()方法。 5 { 6 Name = name; 7 Age = age; 8 } 9 public override void SayHello() //重写父类的SayHello()方法 10 { 11 Console.WriteLine("我叫{0},今年{1}岁",Name,Age); 12 } 13 public override void Call() //重新父类的Call()方法 14 { 15 Console.WriteLine("鸭子嘎嘎的叫"); 16 } 17 }
//Horse类
1 class Horse:Animal //Horse类,继承于动物类 2 { 3 4 public Horse(string name,int age) //构造函数,对属性进行初始化 5 { 6 Name = name; 7 Age = age; 8 } 9 public override void SayHello() //重写父类的SayHello()方法 10 { 11 Console.WriteLine("我叫{0},今年{1}岁",Name,Age); 12 } 13 public override void Call() //重写父类的Call()方法 14 { 15 Console.WriteLine("马儿萌萌的叫"); 16 } 17 }
//Program类
1 class Program //Program类 2 { 3 public Program() //Program类的构造函数 4 { 5 6 } 7 8 static void Main(string[] args) //Main()函数,程序的主入口 9 { 10 Animal ani = new Duck("小鸭子",12); //定义了一个名为ani的Animal类,里面装的对象是Duck,通过new关键字开辟空间,创建对象,执行构造函数,对对象进行初始化。。让ani可以表现出Duck类型,也就是实现多态 11 ani.eat(); //调用的是父类的eat()方法 12 ani.Call(); //其实还是调用父类的Call()方法,只不过ani里面装的是子类对象,所以调用父类的Call()方法时被子类的Call()方法重写了一遍,override在英文翻译就是覆盖,重写 13 ani.SayHello(); 14 Console.ReadKey(); //暂停 15 } 16 }

浙公网安备 33010602011771号