C#程序设计 第3章C#面向对象编程
C# 程序设计 第3章 C#面向对象编程
派生类和基类的转换 ■可以将一个派生类型直接赋值给一个基类型 ■通过该基类型可以访问父类,子类非私有成员 Manager mng=new Manager("王军",45,4000,3758.26); Employee emp=mng; emp.Display(); 执行的是子类的Display(0方法 emp.Bonus=908;/编译阳饫
2 派生类和基类的转换 ▪ 可以将一个派生类型直接赋值给一个基类型 ▪ 通过该基类型可以访问父类,子类非私有成员 Manager mng = new Manager("王军", 45, 4000, 3758.26); Employee emp = mng; emp.Display( ); emp. Bonus=908;//编译错误 执行的是子类的Display()方法
基本内容 方法的隐藏 方法的重写 抽象类和抽象方法 密封类和密封方法 嵌套类 分部类
3 基本内容 方法的隐藏 密封类和密封方法 嵌套类 方法的重写 抽象类和抽象方法 分部类
方法的隐藏 输出:学生的学号。 public class Person public class Student:Person 隐藏 public void Getlnfo() public new void GetInfo() { Console.WriteLine("name:"+name ) Console.WriteLine("studentID:"+studentID); Console.WriteLine("age:"+age); } Person per new Person("person",50); name:person per.Getlnfo(); age:50 Student stu new Student("student",20,"201209"); stu.Getlnfo(); studentID:201209 继承是子类使用父类的方法
4 方法的隐藏 Person per = new Person("person",50); per.GetInfo(); Student stu = new Student("student",20,"201209"); stu. GetInfo(); name: person age:50 studentID:201209 继承是子类使用父类的方法 输出:学生的学号。 隐藏
方法的隐藏 ■ 如何隐藏父类的方法? ·使用关键字new来覆盖方法(隐藏方法) ·不加new关键字,也认为是方沙 如何使得父类变量被赋值 为子类实例时,调用的是 ·类或结构中的常量、字段、属 子类的方法? 成员 不可以与overridel同用 使用new隐藏父类方法时 s=singer; 我是一个明星 s.Introduce(); 5
5 方法的隐藏 ▪ 如何隐藏父类的方法? ◼ 使用关键字new来覆盖方法(隐藏方法) ◼ 不加new关键字,也认为是方法隐藏,但编译会产生警告 ◼ 类或结构中的常量、字段、属性、方法隐藏基类中的同名 成员 ◼ 不可以与override同用 使用new隐藏父类方法时 s=singer; s.Introduce(); 我是一个明星 如何使得父类变量被赋值 为子类实例时,调用的是 子类的方法?