Unity-C#基础学习08

第八节:虚方法,重写,多态,面向对象,构造构析

一、虚方法,重写

重写和虚方法

虚方法:多用于实现多态(使用父类的类型,去调用子类中实现的方法)

虚方法用virtual来修饰,用override修饰的方法叫做重写

注意:只有方法和属性才是virtual来修饰,字段不能

使用格式:父类中使用关键字virtual来修饰方法,在子类中重写父类中定义的方法,使用关键字override(重写)

方法替换,子类中实现和父类名字一样的方法,创建子类对象时,会调用子类中的方法,而不是调用继承自父类中实现的方法,new关键字的作用属于系统的友好提示,防止开发人员误用方法名。

override重写,是在子类中重写父类中的方法,两个函数的函数特征(函数名、参数类型与个数)相同。用于扩展或修改继承的方法、属性、索引器或事件的抽象或虚拟实现。提供从基类继承的成员的新实现,而通过override声明重写的方法称为基方法。
注意事项:

1.重写基方法必须具有与override方法相同的签名。
2.override声明不能更改virtual方法的可访问性,且override方法与virtual方法必须具有相同级别访问修饰符。
3.不能用new、static、virtual修饰符修改override方法。
4.重写属性声明必须指定与继承的属性完全相同的访问修饰符、类型和名称。
5.重写的属性必须是virtual、abstract或override。
6.不能重写非虚方法或静态方法。
7.父类中有abstract,那么子类同名方法必定有override,若父类中有 virtual方法,子类同名方法不一定是override,可能是overload。
8.override必定有父子类关系。

二、多态

1.方法替换:子类中声明实现和父类同名的方法,使用new关键字,创建子类对象,调用的是子类中的方法实现

2.方法重写:子类可以override,父类中使用virtual、abstract或者override修饰的方法,这样在父类对象接收子类对象时,就可以实现父类对象调用子类中的方法,但是如果是正常创建子类对象或者父类对象,他们还是各自调用各自内部的方法

3.sealed:如果用来修饰class,表示当前类为密封类不能被其他类继承;如果用来修饰方法,表示这个方法不能再被其他方法重写

4.base:方法名,表示执行父类中的该方法一次,一般会在重写方法时用到。

三、构造方法和构析方法

构造方法:负责开辟内存空间,初始化对象

1)构造方法的方法名要和类名一致

2)构造方法没有返回值,不需要写void

3)构造方法可以添加参数

4)构造方法允许重载

5)如果没有类添加构造方法,系统会提供一个默认的构造方法,这个方法只负责开辟内存空间

析构方法:在对象销毁时使用,用于释放内存

1)每个类只能有一个析构方法

2)析构方法不能有返回值

3)析构方法不能有访问修饰符

4)析构方法不能有参数,更不能重载

5)析构方法只能由系统自动调用,不能手动调用

四、面向对象

面向过程:以事件为中心,关注的是完成事件的详细步骤,一步一步该怎么实现

面向对象:以事物为中心,关注的是每个事物具备的行为和特性,而完成该事件只是事物所有功能的一部分功能而已

面向对象的两个核心概念:

类:具备相同特征的行为的事物的抽象,就是一个数据类型,是一个抽象的概念

对象:类的实例,类的具体表现,生活zhong 万事万物都是对象,相当于变量

面向对象的优势:重用性、灵活性、拓展性

面向对象的三大特征:封装、继承、多态

oo:面向对象

oop:面向对象编程

opp:面向对象的编程

 

你可能感兴趣的:(unity,c#)