百度怎么不收录我的网站,交换友情链接的目的,中美关系最新消息视频,中国互联网头部企业今天我们来聊一聊继承#xff0c;说实话今天也是我第一次接触。
继承的概念是什么呢#xff1f;就是一个类可以继承另一个类的属性和方法#xff08;成员#xff09;
继承是面向对象编程中的一个非常重要的特性。
好了#xff0c;废话不多说#xff0c;下面切入正题说实话今天也是我第一次接触。
继承的概念是什么呢就是一个类可以继承另一个类的属性和方法成员
继承是面向对象编程中的一个非常重要的特性。
好了废话不多说下面切入正题 1.首先我们定义一个子类给它创建两个构造一个无参构造和一个有参构造 定义一个枚举类
在定义的子类中它有自己独有的属性 在定义的父类中的属性和构造 在Main方法中 同时要注意在调用子类的带参构造时我们要想到调用子类构造的时候没有使用base关键字调用父类的指定的构造默认调用父类的无参构造.
补充一下 01.base代表父类对象如果base()调用父类的构造函数 02.base代表的是方法调用是不需要参数类型的 03.base(传参顺序和父类构造一致变量名和子类构造参数一致)
2.在这里补充一点访问修饰符
我们所知道的public private protected
下面我画一个图来简单的描述一下√表示可以×表示不可以 当前类 子类 其他类(Program) private √ × × protected √ √ × public √ √ √
总结我们可以清晰的明白三种访问修饰符对类成员的访问限制强度privateprotectedpublic 3.new 子类底层原理图
我简单的用一个图来描述一下 用文字描述 1.走到子类构造不进入构造体 2.转向父类进入父类构造体执行 3.转回子类构造执行子类构造体 4.转到Main内存中构建出子类对象
4.继承还具有两大特性这个我们也不要忘记了就是单根性和传递性 单根性指的就是一个子类只有一个父类 传递性就是只要跟父类有继承关系就可以使用父类的属性和方法 接下来我们讲一讲多态
1.多态是什么呢字面上的意思就是多种形态
用专业一点的话来说就是指同一个操作作用于不同的对象时可以有不同的解释产生不同的执行效果。
我们所接触的方法重载也是多态的一种方式。
如何实现多态呢不要急下面我来解说
1实现方法的重写 在父类中定义的方法用virtual关键字来定义为虚方法 在子类中定义自己的方法用override关键字来修饰实现对父类的方法的重写
2定义父类变量用子类变量初始化父类变量
是不是觉得抽象其实我刚开始学习时也是一样的下面来一个小案例
//创建一个Person父类 public class Person { public virtual void SayHello() { //父类特有的方法 Console.WriteLine(父类打招呼方法); } }
//创建一个Korea子类
public class Korea:Person //在这里要注意它继承于Person类 { public override void SayHello() { Console.WriteLine(金喜善打招呼方法); } }
//创建一个Chinese类
public class Chinese:Person //在这里要注意它继承于Person类 { public override void SayHello() { Console.WriteLine(你好); } }
//创建一个American类
public class American:Person //在这里要注意它继承于Person类 { public override void SayHello() { Console.WriteLine(Hello); } } 前面我们也学过泛型了下面我们就用泛型来存储 ListPerson listnew ListPerson(); Chinese chinesenew Chinese(); American usanew American(); Korea koreanew Korea(); list.Add(chinese); list.Add(usa); list.Add(korea);
下面我们可以用foreach来遍历
方式一 foreach (Person person in list) { person.SayHello(); }
方式二 foreach (Person person in list) { //方式二不使用统一调用 if (person is Chinese) { Chinese chinese person as Chinese; chinese.SayHello(); } if (person is Korea) { Korea chinese person as Korea; korea.SayHello(); } if (person is American) { American chinese person as American; american.SayHello(); } }
下面我再穿插个示例