A.4继承,方法重写(覆盖)(override),虚函数(virtaul)和多态,抽象方法和抽象类abstract,密封类(sealed)和密封方法,常量的定义(const)

ylbtech- .NET-Basic: A.4-继承,方法重写(覆盖)(override),虚函数(virtaul)和多态,抽象方法和抽象类abstract,密封类(sealed)和密封方法,常量的定义(const)

 A.4-继承,方法重写(覆盖)(override),虚函数(virtaul)和多态,抽象方法和抽象类abstract,密封类(sealed)和密封方法,常量的定义(const)

1.A,运行效果图返回顶部
 
三、继承

1、继承的语法实现:
class 子类名 : 基类名{}

2、子类构造方法的实现,及base关键字的使用; ---super
1)通过base子类可以访问基类的成员,
2)在子类的构造方法中可以通过 base来访问基类的构造方法:
public 子类构造(参数列表) : base(参数列表)
{

}

3、方法的重写(覆盖)
public 返回值类型 方法名(); //会出现警告的
OR
new public 返回值类型 方法名();

如果,new 后面的方法声明,不构成对父类方法的覆盖,不会报错, 但会有警告


总结:
override:如果被重写方法时virtual,abstract
new,除此以外,重写都可以用new ,或者不写


4、虚函数virtual和多态的实现;
虚函数(virtual):主要目的就是为了让子类重写,这样的方法可以有方法体
abstract

子类的重写格式 :
override 返回类型 方法名()
5、抽象方法和抽象类abstract
抽象方法和虚方法的区别;

6、密封类和密封方法sealed --类似java中的 final
密封的方法不能被重写,
密封的类不能被继承

sealed针对的时子类,以及子类重写的方法

7、常量的定义:
语法:
public const 类型 常量名称 = 值; //常量一定是全局的因此不能使用
static ,加了算错

任务:
1、实现以下类的定义
1)定义一个人类封装以下成员
成员变量(编号,姓名,年龄)
成员方法(空/全参构造,show)
属性
2)定义一个学生类继承人类
成员变量(班级)
成员方法(空/全参构造,show)
属性
3)定义一个教师类继承人类
成员变量(专业)
成员方法(空/全参构造,show)
属性
4)Program测试类,测试学生类,和教师类的所有方法;

2、实现以下类的定义,
1)定义一个动物类封装以下成员
成员变量(名称)
成员方法(空/全参构造,吃、show(虚方法))
属性
2)定义一个猫类继承动物类
成员变量(颜色)
成员方法(空/全参构造,重写吃、show)
属性
3)定义一个鱼类继承动物类
成员变量(重量)
成员方法(空/全参构造,重写吃、show)
属性
4)Program测试类,用动物类的引用来测试猫类、鱼类对象的所有方法;

3、实现以下类的定义,
1)定义一个形状类封装以下成员
成员变量(常量:圆周率)
成员方法(抽象的求面积、求周长)

2)定义一个圆形类继承形状类
成员变量(半径)
成员方法(空/全参构造,以及其他必须实现的方法)
属性
3)定义一个长方形类继承形状类
成员变量(长,宽)
成员方法(空/全参构造,以及其他必须实现的方法)
属性
4)Program测试类,测试圆形类和长方形类;

4、将上一题中的圆形类中的面积,周长的方法设着成为密封的,然后创建该类的子类测试
该方法是否能被重写;将长方形类设置成为密封得,测试这个类是否能被继承;

warn 作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/ylbtech/p/2980825.html