中职语文出版社《面向对象程序设计C#》单元9 ATM系统员工管理模块教案

资源下载
  1. 二一教育资源

中职语文出版社《面向对象程序设计C#》单元9 ATM系统员工管理模块教案

资源简介

单元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()方法的访问修饰符修改为protected
protected 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)

展开更多......

收起↑

资源预览