继承的特点
- 继承顺序的不可逆性:继承是从上往下一次继承,而不能逆序进行。
- 继承的延续性:在继承顺序中,子类具备父类的属性和特征。
继承使用的必要性
- 代码复用,避免重复。
- 一处更新,处处更新。
继承的基本使用示例
编写玩具猫和玩具狗的相关程序,要求:
1.当主人向玩具猫和玩具狗提问时,它们能够根据自己的特征做自我介绍。
2.当主人说"表演节目"时,玩具猫跳舞、玩具狗赛跑。
程序分析:
特征(属性):姓名、颜色、类别、喜好食物
动作(方法):自我介绍、跳舞、赛跑
未使用继承:
1 /// <summary> 2 /// 玩具猫类 3 /// </summary> 4 public class Cat 5 { 6 public string Name { get; set; }//名字 7 public string Color { get; set; }//颜色 8 public string Kind { get; set; }//种类 9 public string Favorite { get; set; }//喜好 10 //自我介绍 11 public void Introduce() { 12 string info = string.Format("我是漂亮的{0},我的名字叫{1},身穿{2}的衣服,我爱吃{3}!",this.Kind,Name,Color,Favorite); 13 Console.WriteLine(info); 14 } 15 16 //跳舞 17 public void Dancing() { 18 Console.WriteLine("下面给大家表演,请大家鼓掌!"); 19 } 20 }
1 /// <summary> 2 /// 玩具狗类 3 /// </summary> 4 public class Dog 5 { 6 public string Name { get; set; }//名字 7 public string Color { get; set; }//颜色 8 public string Kind { get; set; }//种类 9 public string Favorite { get; set; }//喜好 10 //自我介绍 11 public void Introduce() 12 { 13 string info = string.Format("我是漂亮的{0},我的名字叫{1},身穿{2}的衣服,我爱吃{3}!", this.Kind, Name, Color, Favorite); 14 Console.WriteLine(info); 15 } 16 17 public void Race() { 18 Console.WriteLine("下面给大家表演赛跑,请大家鼓掌!"); 19 }
从上面的程序分析,我们不难发现,玩具猫和玩具狗类的定义存在大量重复代码,因此我们可以将重复的代码(重复的属性和方法)抽取出来,作为一个父类,再继承这个父类,从而实现对代码的复用,减少工作量。
使用继承:
1 /// <summary> 2 /// 动物类(父类) 3 /// </summary> 4 class Animal 5 { 6 public string Name { get; set; }//名字 7 public string Color { get; set; }//颜色 8 public string Kind { get; set; }//种类 9 public string Favorite { get; set; }//喜好 10 //自我介绍 11 public void Introduce() 12 { 13 string info = string.Format("我是漂亮的{0},我的名字叫{1},身穿{2}的衣服,我爱吃{3}!", this.Kind, Name, Color, Favorite); 14 Console.WriteLine(info); 15 } 16 }
1 /// <summary> 2 /// 玩具猫类 3 /// </summary> 4 class Cat:Animal//继承Animal类 5 { 6 //跳舞 7 public void Dancing() 8 { 9 Console.WriteLine("下面给大家表演,请大家鼓掌!"); 10 } 11 }
1 /// <summary> 2 /// 玩具狗类 3 /// </summary> 4 class Dog:Animal//继承Animal类 5 { 6 public void Race() 7 { 8 Console.WriteLine("下面给大家表演赛跑,请大家鼓掌!"); 9 } 10 }
程序调用:
1 static void Main(string[] args) 2 { 3 //创建两个对象 4 Cat objCat = new Cat() 5 { 6 Name = "球球", 7 Color = "黄色", 8 Kind = "小花猫", 9 Favorite = "小鱼" 10 }; 11 Dog objDog = new Dog() 12 { 13 Name = "团团", 14 Color = "黑色", 15 Kind = "小黑狗", 16 Favorite = "骨头" 17 }; 18 19 Console.WriteLine("主人要求做自我介绍...."); 20 //调用各自的方法 21 objCat.Introduce(); 22 objDog.Introduce(); 23 24 Console.WriteLine("主人要求表演节目..."); 25 objCat.Dancing(); 26 objDog.Race(); 27 }
继承的基本应用
- 继承的步骤与使用要点
- 抽象公共部分,放到一个特定的类中(父类)。
- 其他类(子类)只需要继承父类,即可拥有父类特征(属性和方法)。
- 根据子类的需要添加属于自己的特征和方法。
- 具体实现(和接口的实现形式类似)
- 在子类后面使用冒号":"继承父类,如:class Dog:Animal