c#的继承
来源:互联网 发布:羽毛球 直播软件 编辑:程序博客网 时间:2024/06/03 13:47
粗略记录一下继承基本都写字代码里了。
子类实例化的时候一定会调用父类默认构造方法,除非指定到别的构造方法。
base就是用来调用的关键字。。。
base()括号里面没有参数说明还是调用默认的构造方法,如下图的mammal的注释掉的那行就是默认的构造方法。
若是括号里有参数如下图:base(name)。。。就要调用上图中的Mammal里的public Mammal(string mamalName)这个方法了。。。。
这儿是父类的代码:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace InherienceDemo{ class Mammal { protected string name; public Mammal() { } public Mammal(string mamalName) { name = mamalName; } public void Talk() { Console.WriteLine("Mamale Talking."); } public string getName() { return name; } public virtual void Breath() //override子类重写父类的方法(只有父类方法是virtual的才能override) { Console.WriteLine(name+",正在呼吸"); } public void SuckleYoung() { Console.WriteLine(name+",正在哺乳"); } }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace InherienceDemo{ class Horse : Mammal { //public string name; public Horse(string name) : base(name) { } new public void Talk()//new关键字是子类隐藏继承的父类中的方法(这样外部再调用就是调的子类的不是父类的了,父类的方法被new之后隐藏了,只有子类的方法了) { Console.WriteLine("Horse Talking."); } public override void Breath() //override子类重写父类的方法(只有父类方法是virtual的才能override) { Console.WriteLine("马正在呼吸"); } public void Trot() { //this.Breath(); Console.WriteLine(base.getName() + ",正在奔跑"); } }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace InherienceDemo{ class Program { static void Main(string[] args) { Mammal mamal = new Mammal("mm"); mamal.Breath(); //mamal.SuckleYoung(); mamal.Talk(); Horse horse = new Horse("hh"); horse.Breath(); //horse.SuckleYoung(); // horse.Trot(); horse.Talk(); //Whale whale = new Whale("ww"); //whale.Breath(); //whale.SuckleYoung(); //whale.Swim(); //父类引用可以引用子类的对象。 //父类引用只能调用子类继承自父类的方法。父类引用不能调用子类独有的方法。 //new关键字是子类隐藏继承的父类中的方法(这样外部再调用就是调的子类的不是父类的了,父类的方法被new之后隐藏了,只有子类的方法了) //override子类重写父类的方法(只有父类方法是virtual的才能override) //父类引用可以调用子类重写父类的方法,而不是调用父类原来的方法。 Mammal newMamal = new Horse("hh"); newMamal.Talk(); //newMamal.getName(); //newMamal.SuckleYoung(); newMamal.Breath(); //try //{ // //子类引用不能直接引用父类对象,除非将父类对象的数据类型强制转换成子类 // Horse newHorse = (Horse)new Mammal("aa"); // //newHorse.Breath(); // //newHorse.SuckleYoung(); // //newHorse.getName(); //} //catch (Exception ex) //{ // Console.WriteLine(ex.Message); //} } }}
override特别注意:
0 0
- C#的继承机制
- C#类的继承
- C# 事件的继承
- C# 事件的继承
- 圈点C#的继承
- C# 的继承体系
- C# 事件的继承
- C#成员的继承
- C#类的继承
- C#继承的特性
- C#类的继承
- C# 事件的继承
- C#的继承机制
- C#类的继承
- C# 事件的继承
- C#类的继承
- c#的继承
- C# 类的继承
- 用正则表达式去掉多余的空格与标点符号 Java
- linux下tab自动补全, redhat没有apt-get命令
- c++ 调用cmd并执行语句的三种方法
- 遍历文件和文件夹
- C#与C/C++的交互
- c#的继承
- 那个曾经的童年无法忘怀
- 所见的GCC和标准C不同的一些语法(长期更新)
- 游戏统计整体架构(不定期更新)
- 在CentOS上搭建PHP服务器环境
- UITableView简单实例*********--------*********
- 浅析备忘录模式
- Python list和tuple的相互转换
- ogg双向复制,支持DML、DDL