zoukankan      html  css  js  c++  java
  • 面向对象理解,封装、继承、多态知识总结

    面向对象

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

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

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

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

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

    1. 封装

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

    (1)属性封装了字段

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

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

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

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

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

    1. 继承

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

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

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

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

    (3)继承的特性

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

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

    (4)里式转换

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

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

    ①       子类可以赋值给父类

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

    ③ 里式转换关键字

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

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

     

    1. 多态

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

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

    二、虚方法

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

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

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

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

    三、抽象类

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

    1. 抽象方法:

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

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

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

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

    (5)抽象类不能实例化

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

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

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

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

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

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

     

    四、接口

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

        

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

        

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

    五、关键字

    1. new

    ① 创建对象

    ——》在堆中开辟空间

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

    ——》调用对象的成员

    ② 隐藏父类的成员

    1. This

    ① 代表当前类的对象

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

    1. Base

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

    ② 调用父类的成员

  • 相关阅读:
    使用 CSS 强制内容不换行
    奇怪的 Object reference not set to an instance of an object
    (String) 和 String.valueOf() 两种字符串转换的区别
    SQL 里面的 UNION 说明
    Flex/AIR 中 Embed 标签的使用
    把 doc、xls、pdf 转换为 swf 的相关工具
    把指定的站点加到 IE 可信站点中
    在 VS 中快速打开文件或类型
    linux配置网卡
    linux配置本地源
  • 原文地址:https://www.cnblogs.com/wjrelax/p/8806401.html
Copyright © 2011-2022 走看看