zoukankan      html  css  js  c++  java
  • 72、介绍面向对象的三大特性,并且举例说明

    三大特性:继承、封装和多态

    (1)继承

    让某种类型对象获得另一个类型对象的属性和方法。

    它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展

    常见的继承有三种方式:

    1. 实现继承:指使用基类的属性和方法而无需额外编码的能力

    2. 接口继承:指仅使用属性和方法的名称、但是子类必须提供实现的能力

    3. 可视继承:指子窗体(类)使用基窗体(类)的外观和实现代码的能力(C++里好像不怎么用)

    例如,将人定义为一个抽象类,拥有姓名、性别、年龄等公共属性,吃饭、睡觉、走路等公共方法,在 定义一个具体的人时,就可以继承这个抽象类,既保留了公共属性和方法,也可以在此基础上扩展跳 舞、唱歌等特有方法

    (2)封装

    数据和代码捆绑在一起,避免外界干扰和不确定性访问。

    封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操 作,对不可信的进行信息隐藏,例如:将公共的数据或方法使用public修饰,而不希望被访问的数据或 方法采用private修饰。

    (3)多态

    同一事物表现出不同事物的能力,即向不同对象发送同一消息,不同的对象在接收时会产生不同的行为 (重载实现编译时多态,虚函数实现运行时多态)。

    多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根 据当前赋值给它的子对象的特性以不同的方式运作。简单一句话:允许将子类类型的指针赋值给父类类型的指针

    实现多态有二种方式:覆盖(override),重载(overload)。覆盖:是指子类重新定义父类的虚函数 的做法。重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数 类型不同,或许两者都不同)。例如:基类是一个抽象对象——人,那教师、运动员也是人,而使用这 个抽象对象既可以表示教师、也可以表示运动员。

  • 相关阅读:
    02day-webpack
    Mybatis中的@Param注解(自己没试过)
    SpringMVC
    jsp获取map
    form表单提交时选择性传值到后台
    form表单提交数据的几种方式
    ajax中什么时候进success和error
    @RequestParam加与不加的区别
    @RequestBody和@RequestParam区别
    java.lang.IllegalArgumentException: Invalid character found in the request target. The valid charact
  • 原文地址:https://www.cnblogs.com/crbhf/p/14979111.html
Copyright © 2011-2022 走看看