面向对象理解,封装、继承、多态知识总结

面向对象

类就是对象在程序中的模拟实现,类决定了对象将要拥有的属性和行为

类是一种数据类型,用户自定义的数据类型

类的组成:字段、属性、方法、构造函数等

对象时具体的,是类的具体实例。对象具有属性(特征)和方法(行为)

一、面向对象的三大特征:

  1. 封装

   类和对象本身就是封装的体现

(1)属性封装了字段

(2)方法的多个参数封装成了一个对象

(3)将一堆代码封装到了一个方法中

(4)将一些功能封装到了几个类中

(5)将一些具有相同功能的代码封装到了一个程序集中(dllexe),并且对外提供统一的访问接口(属性名、方法名等)

(6)封装减少了大量的冗余代码

  1. 继承

(1)继承是指类与类之间的关系

(2)继承带给我们的好处

① 继承减少了类中的冗余代码

② 让类与类产生了关系,为多态打下了基础

(3)继承的特性

① 单根性 :一个子类只能有一个父类

② 传递性:爷爷类 爹类 儿子类

(4)里式转换

     指定一个父类类型,指向一个子类的对象/ 将子类对象赋给父类

     只要子类继承父类,那么子类的对象可以赋值给父类

①       子类可以赋值给父类

② 如果父类中装的是父类对象,则可以将这个父类转换为对应的子类对象

③ 里式转换关键字

  1. is:返回bool类型,指示是否可以做这个转换
  2. As:如果转换成功,则返回对象,否则返回null

④ 作用:我们可以将所有的子类都当做是父类来看,针对父类进行编程,写出通用的代码,适应需求的不断变化

 面向对象理解,封装、继承、多态知识总结_第1张图片

  1. 多态

(1)多态的作用:把不同的子类对象都当做父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适用需求不断变化

(2)多态就是指不同的对象收到相同的消息时,会产生不同的行为,同一个类在不同的场合下表现出不同的行为特征

二、虚方法

  1. 虚方法需要注意的几点

(1)父类中如果有方法需要让子类重写,则可以将该方法标记为virtual

(2)虚方法在父类中必须有实现,哪怕是空实现

(3)虚方法子类中可以重写(override),也可以不重写

三、抽象类

抽象类中可以有抽象方法,也可以没有抽象方法,抽象方法不能实现

  1. 抽象方法:

(1)抽象方法需要用abstract关键字标识

(2)抽象方法不能有任何方法实现

(3)抽象成员必须包含在抽象类中

(4)由于抽象方法没有任何实现,所以子类必须将抽象方法重写

(5)抽象类不能实例化

(6)抽象类中可以包括抽象方法,也可以包括非抽象方法

(7)抽象类不能为静态类,即不能用static修饰

(8)抽象类有构造函数,虽然不能被实例化

(9)抽象成员的访问修饰符不能是private

(10)子类继承抽象类后,必须把父类中的所有抽象成员都重写,除非子类也是一个抽象类,则可以不重写

(11)父类不确定子类如何实现自己的行为,就将其行为定义为一个抽象的函数

 面向对象理解,封装、继承、多态知识总结_第2张图片

四、接口

  1. 接口中只能包含方法(属性、事件、索引器也都是方法)
  2. 接口中的方法不能有任何实现
  3. 接口不能被实例化,也就是说接口不能(new)创建对象,跟抽象类一样,因为创建对象没有意义
  4. 接口是一种规范也是一种能力
  5. 接口具有功能单一性
  6. 接口中的成员不能有任何访问修饰符(默认为public

    面向对象理解,封装、继承、多态知识总结_第3张图片

  1. 继承接口的子类必须将接口中的所有成员方法都实现

    面向对象理解,封装、继承、多态知识总结_第4张图片

  1. 子类实现接口的方法时,不需要任何关键字,直接实现即可
  2. 接口存在的意义就是为了多态

五、关键字

  1. new

① 创建对象

——》在堆中开辟空间

——》在开辟的堆空间中创建对象

——》调用对象的成员

② 隐藏父类的成员

  1. This

① 代表当前类的对象

② 显示的调用用自己的构造函数

  1. Base

① 显示调用父类的构造函数

② 调用父类的成员

转载于:https://www.cnblogs.com/wjrelax/p/8806401.html

你可能感兴趣的:(面向对象理解,封装、继承、多态知识总结)