一、根据元素的组织方式,数据结构可以分以下两类:
1.线性:元素需要按照先后顺序访问,并不是说所有元素,都得完后相连地存放。eg:链表、数组、栈、队列;PS:栈用vector数组表示;队列用链表或数组;
2.非线性:元素按照非线性的顺序存储。eg:树、图;
二、理解面向对象的概念
1.面向对象:将数据和操作数据的方法放在一起,作为一个互相依赖的整体--对象。对同类对象抽象出他们的共性,形成类。对象称之为类的实例。
经典例子;将大象装进冰箱里。首先把冰箱门打开、然后把大象放进去、最后把门关上。这样就把大象放进去了。从上面的叙述我们可以得出从把冰箱门打开、然后把大象放进去、最后把门关上,这其实就是一个过程,最后的结果就是把大象放到了冰箱里。在这个过程中我们可以把冰箱看成一个对象而打开冰箱门,把大象放进去,然后把冰箱门关上,我们都可以把这一系列动作看成是冰箱这个对象的方法,而我们要把大象放到冰箱里我们只需要调用冰箱的这些方法就行了,至于说冰箱怎么实现这些方法的你没有必要知道,你所要知道的就是结果:大象放到了冰箱里。这就是面向对象。
2.面向对象的三大特性:封装、继承和多态。参考https://blog.csdn.net/W_DevilMayCry/article/details/70832893
2.1.封装:隐藏对象的对象的属性和实现细节,只对外提供公共访问方式。
好处:便于使用,能够提高重用性,安全
2.2.继承:子类对象拥有父类的全部属性和方法,成为子类对父类的继承。Java中时单继承,父类可有多个子类,但子类只能继承一个父类。
好处:实现了代码的复用。
子类不能继承父类中private的成员变量和方法;
子类可以重写父类的方法;使用super对父类成员访问
super的三种用法:(1)访问父类被隐藏的成员变量,super.variable
(2)调用父类中被重写的方法
(3)调用父类的构造函数
2.3多态
第一种方式:父类引用指向子类对象。
第二种方式:重写和重载
重写:在同一个类中,编写多个名称相同的方法,这些方法在参数个数、参数类型或参数顺序上有所区别。
子类的方法必须要与父类方法完全一致,才能达到重写效果;
子类方法的返回值必须和父类被重写方法的返回一致;
子类抛的异常必须和父类抛的异常一致或是其子类;
被重写的方法不能是private,否则只是在子类中新定义了一个方法,并没有对其进行覆盖。
重载:在子类中编写与父类方法同名的方法,使得两者的参数个数、参数类型及返回值保持一致。
方法名相同,函数参数不同(参数个数、类型或两者都不同);不能以返回值来区分重载方法;