zoukankan      html  css  js  c++  java
  • C++抽象,封装,继承,多态

    面向对象的基本概念有对象、类、抽象、封装、继承、多态、接口等

    有的人说面向对象有四大基本特征,抽象,封装,继承,多态,但其实抽象可以抛出在外,本质来说,面向对象的基本特征是继承,封装,多态。

    先来说C++中的对象和类:

    类是对象的抽象,而对象是类的具体化,而要使用类的功能,具体就要先定义一个对象

    例如:class Student { };  Student stu里面的stu就是对象   还有一种定义的方法 class { }stu1,stu2;

    封装:其实封装和抽象可以归结到一起,抽象的是具体的实现,封装的是接口,封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成”类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,特定的访问权限来使用类的成员。封装可以隐藏实现细节, 使得代码模块化。

    封装的简单一句话:封装就是将实例抽象得到的数据和行为(或功能)封装成一个类。

    继承:继承是指这样一种能力,它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。其继承的过程,就是从一般到特殊的过程,它是类与类之间的一种关系,一个类通过继承的方法,可以得到另一个类属性和方法,达到代码重用的目的。

    引申:

    继承,有三种继承方法,分为实现继承,接口继承,可视化继承。

     实现继承就是重新写一个函数去实现。用纯虚函数实现。

     接口继承是指纯粹继承父辈的老底,也可以去重新实现。用虚函数实现。  

    可视化继承则是纯粹的全部自己实现,自己功能自己解决。对应的是非虚函数。

    多态:C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖或者称为重写。而重载则是允许有多个同名的函数,而这些函数的参数列表不同,允许参数个数不同,参数类型不同,或者两者都不同。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数

    多态简单一句话:一种调用,多种状态(一个接口,多种方法)

    引申:

    重载

    同一个类中,函数名相同,参数列表不同的函数之间是重载关系。

    覆盖
    子类重写父类的虚函数,函数名相同,参数列表相同,返回值相同的虚函数。

    隐藏(有两种情况)
    1. 派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字。
    2. 派生类的函数与基类的函数同名,并且参数也相同。但是基类函数没有virtual关键字。

  • 相关阅读:
    C++链式队列基本操作
    C++链栈基本操作
    C++顺序栈基本操作
    C++链表基本操作
    C/C++/JAVA
    C++操作链表
    How Many Maos Does the Guanxi Worth
    Heavy Transportation
    Frogger
    Til the Cows Come Home(Dijkstra)
  • 原文地址:https://www.cnblogs.com/hjt1806/p/9470871.html
Copyright © 2011-2022 走看看