资源简介 单元9 ATM系统员工管理模块课 时本章目标: 理解继承的概念 了解继承中的构造函数 掌握base和protected关键字的语法 掌握密封类的语法 理解多态的概念本章重点: 掌握base和protected关键字的语法 掌握密封类的语法本章难点: 理解多态的概念内容讲解:结构体1、知识点引入继承在生活中常常可以看见,以前古代的皇帝传位的时候,一定要有自己血缘的才能继承。在软件开发过程中,经常会碰到这样的问题,以前开发的软件或者某个功能,在后来的开发中又需要重新编写,做重复的事情,降低了开发的效率。为了提高软件模块的可重用性,提高软件的开发效率,总是希望能够利用前人或自己以前的开发成果。C#这种面向对象的程序设计语言为我们提供了一个重要的特性——继承性(inheritance)。2、知识点继承是面向对象程序设计的主要特征之一,是类之间一种从属关系。分为父类和子类,子类也叫派生类。子类继承父类中的方法、成员、属性等。继承语法:class 类名:父类类名{}例如:创建一个人类,该类中有姓名和年龄及成员方法Speak()中输出“你好,我是张三,很高兴认识你”using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace InheritanceDemo{//定义Person类,包含两个公开成员变量class Person{public int age;public string name;public void Speak(){Console.WriteLine("你好,我是{0},很高兴认识你!",this.name);}}//定义Student类,Student类继承了Person类;class Student : Person{//新添加的成员变量stuid,Student类就有了三个成员变量public int stuid;//新添加的成员方法Study(),加上继承的Speak(),共两个方法public void Study(){Console.WriteLine("好好学习,天天向上!");}}class Program{static void Main(string[] args){Student stu = new Student();stu.stuid = 1;stu.name = "姚明";stu.age = 24;stu.Speak();//调用Student对象的Study()方法stu.Study();}}}但是要注意的是继承是单一的,只能有一个父类,student就不能继承其他类,但是父类可以有许多子类那对于父类中的构造方法能不能继承。构造函数是不能被继承的。构造方法是用于初始化成员,但是可以通过调用父类的构造方法给子类的成员赋值,关键字为base,我们来看个例子:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace InheritanceDemo{class Person{public int age;public string name;public Person(){Console.WriteLine("我是父类无参构造方法");}}//Student类继承了Person类,没有提供构造方法class Student : Person{public int stuid;}class Program{static void Main(string[] args){//实例化子类对象,调用子类构造方法,会自动调用父类无参构造方法Student stu = new Student();}}}对于base来说,只能基于类、成员都是公共的,也就是被public修饰,子类才能继承,其他任何一类也可以访问,并不利于保护成员,如果被私有private修饰,子类就不能访问。所以为了防止这种情况,c#提供了另外一个修饰符protected。允许子类访问,但是其他类能不访问比如:namespace InheritanceDemo{class Person{public int age;public string name;public Person(int Age, string Name){this.age = Age;this.name = Name;Console.WriteLine("我是父类带参数构造方法!");}//把SayHello()方法的访问修饰符修改为protectedprotected void SayHello(){Console.WriteLine("你好,很高兴认识你!");}class Student : Person{public int stuid;public Student(int Stuid, int Age, string Name): base(Age,Name){this.stuid = Stuid;Console.WriteLine("我是子类构造方法!");}public void Speak(){//调用父类Person类的SayHello()方法base.SayHello();}}class Program{static void Main(string[] args){Student stu = new Student(1,24,"姚明");//调用子类的Speak()方法,会执行父类的SayHello()方法stu.Speak();}}}接下来,我们再看看密封类,不会被继承的类,关键字salead,比如sealed class Circle{public int radius; //圆的半径public double GetInfo(){return 2 * Math.PI * radius;}}多态多态,多种形态的意思。是面向对象的特点。前面学过的重载,就是多态的一种。除了重载,还有重写,重写是一个类里面有多个同名的方法,根据参数类型或者个数的不同区分。根据参数的不同来调用相应的方法。关键字:virtual和override。主要用在基类和子类中。比如:using System;using System.Collections.Generic;using System.Text;namespace Test1{class Shapes{public virtual void area(){Console.WriteLine("求形状的面积");}}class Circle:Shapes{public override void area()//重写{Console.WriteLine("这是圆的面积!");}}class Square :Shapes{public override void area()//重写{Console.WriteLine ("这是矩形的面积!");}}class Triangle :Shapes{public override void area()//重写{Console.WriteLine("这是三角形的面积!");}}class Program{static void Main(string[] args){//父类的句柄可以指向子类的对象,反之则不成立Shapes shapes=new Circle();shapes.area();//它是输出圆的面积Circle circle = new Circle();Square square = new Square();Triangle triangle = new Triangle();fn(triangle);fn(circle);fn(square);}//父类的句柄可以指向子类的对象,反之则不成立static void fn(Shapes shapes){shapes.area(); //多态性}}教育改变生活(We Are Changing) 展开更多...... 收起↑ 资源预览