C#(day5)

8 篇文章 0 订阅
面向对象高级编程

1、继承与派生

1.1、继承
概念:当我们在类A的基础上构建类B,称之为类B继承了类A,类A是类B的基类(也叫父类),类B是类A的派生类(也叫子类)。
特点:当我们修改了基类,那么这些修改将自动被传递到其派生类。
语法格式:
[访问修饰符] 派生类名:基类名
{
    类的定义
}



1.2、隐藏基类成员:

定义:当派生类从基类继承时,不一定希望派生类继承基类的全部成员,这时需要对基类的每个成员都进行继承控制,可以使用不同的修饰符标明是否允许极了成员被派生类继承。
public修饰符:该成员能够被派生类继承,且能在类定义之外被访问。
protected修饰符:该成员能够被派生类继承,但不能在类定义之外被访问。
private修饰符:该成员不能被派生类继承,且不能在类定义之外被访问。



1.3、派生类的构造函数





2、多态性

2.1、重要性:多态是面向对象程序设计的一个强大机制:为名称相同的方法提供了不同的实现方式,继承自同一基类的不同派生类可以为同名方法定义不同的功能,同一方法作用于不同了的对象,可以有不同的解释,产生不同的执行结果。直到程序运行时,才根据实际情况决定实现何种操作。
使用多态的一个主要目的是为了接口重用。简单的说,就是在方法参数和集合或数组等位置,派生类的对象可以作为基类的对象处理,我们可以把方法的参数定义为基类类型,而使用派生类的对象作为实际参数调用方法,而不必为每一种派生类定义一个新的同名方法,也可以把数组元素定义为基类类型,将同一基类的不同派生类的对象作为数组元素。在C#中,运行时的多态性是通过继承关系中基类和派生类使用虚方法和重写来实现的。

2.2、虚方法:

注意:
基类中使用关键词virtual将方法成员定义为虚方法
派生类中使用override关键词重写基类的虚方法
基类和派生类中对应方法成员的方法名,返回值类型,参数个数和类型必须完全相同。
在派生中可以使用 base.方法名() 的格式调用基类中的方法。



2.3、多态和重载

相同:
直观地看,多态和重载都是定义了多个同名方法,但二者存在本质区别。

区别:
重载是在同一个类的内部定义多个同名方法,这些同名方法的参数列表必须互不相同(参数个数或类型不同),返回值类型可以相同也可以不同,在用户调用该方法时系统能够根据参数的不同自动识别应调用的方法。
多态是在派生类中定义一个和基类中一样名字的非虚方法,会让基类中的同名虚方法被隐藏,基类中定义的虚方法在派生类中只能被重写一次。基类中使用关键词virtual将方法成员定义虚方法,派生类中使用override关键词重写基类的虚方法,基类和派生类中对应方法成员的方法名、返回值类型、参数个数和类型必须完全相同。




3、抽象类与抽象方法

定义:抽象类是指只能作为基类使用的类。抽象类用于创建派生类,本身不能实例化,也就是不能创建对象。抽象类使用关键字abstract修饰。

抽象类格式:
abstrat class类名
{
    类成员定义
}

抽象方法格式:
访问修饰符   abstract    返回值类型   方法名(参数表);





4、密封类与密封方法

密封类的定义格式:
sealed class 类名
{
    类成员定义
}

密封方法的定义格式:
访问修饰符   sealed   返回值类型   方法名(参数表)
{
}





5、接口

5.1、定义:接口是类和类之间的一种协定、一种约束。通过接口对使用同一方法的不同类进行一种约束,让它们都继承于同一接口,既方便统一管理,又方便调用。


5.2、接口的声明

声明格式:
[访问修饰符]   interface   接口名
{
    接口成员声明
}


5.3、接口成员的声明

声明格式:
返回值类型   方法名(参数表)

接口中属性成员的声明格式:
类型   属性名{get; set;}


5.4、接口成员的访问

格式:对象名.成员名

5.5、接口的实现



5.6、接口和抽象类的区别

接口中不能包含方法的具体实现,接口中声明的方法要由继承接口的类给出具体实例;
抽象类中声明的方法既可以在抽象类中给出具体实现,也可以只给出方法名,由抽象类的派生类完成该方法的具体实现。

接口支持多重继承,一个类可以同时继承多个接口,在类的定义中对多个接口声明的方法加实现;
抽象类只能实现单一继承,及抽象类的派生类只能有一个基类。一个类可以同时继承基类和接口,此时在类定义中类名之后先给出基类名,再给出接口名。

接口定义中不能为接口成员指定访问修饰符,默认为Public;
抽象类定义中可以为接口成员指定访问修饰符。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值