面向对象编程基础
一.对象,类,实例化
对象
在现实生活中,每一个物体都是对象,例如自行车就是一个对象。
通常都会将对象划分为两个部分即静态部分和动态部分。静态部分顾名思义就是不能动的部分,这个部分被称为属性,任何对象都具备其自身的属性。如一辆自行车包括方向盘,轮胎,链条等属性。
具有这些属性的自行车执行哪些动作也是一个值得讨论的部分这辆车可以转弯,可以直行,这里是这辆自行车具备的行为,这部分被称为方法。
类
由自行车,以及它的属性和方法构成的一个抽象,在程序中叫做类。
所有的自行车都具有以上的属性和行为。可以将这些属性和行为封装起来,以描述自行车这类事物。
由此可见,类实质上就是封装对象属性和行为的载体。对象则是类抽象出来的一个实例。而根据类创建对象的过程就是一个实例化的过程。
实例化
实例化是指在面向对象的编程中,把用类创建对象的过程称为实例化。是将一个抽象的概念类,具体到该类实物的过程。实例化过程中一般由类名 对象名 = new 类名(参数1,参数2...参数n)构成。
二.面向对象程序设计语言的三大原则
封装
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
- 只能通过规定的方法访问数据。
- 隐藏类的实例细节,方便修改和实现。
从表格可以看出从上到下封装性越来越差。
继承
继承是类与类的一种关系,是一种“is a”的关系。比如“狗”继承“动物”,这里动物类是狗类的父类或者基类,狗类是动物类的子类或者派生类。如下图所示:
子类拥有父类的所有属性和方法(除了private修饰的属性不能拥有)从而实现了实现代码的复用;
只要在子类加上extends关键字继承相应的父类就可以了:
多态
三、多态
面向对象的最后一个特性就是多态,那么什么是多态呢?多态就是对象的多种形态。
1.引用多态
父类的引用可以指向本类的对象;
父类的引用可以指向子类的对象;
这两句话是什么意思呢,让我们用代码来体验一下,首先我们创建一个父类Animal和一个子类Dog,在主函数里如下所示:
注意:我们不能使用一个子类的引用来指向父类的对象,
这里我们必须深刻理解引用多态的意义,才能更好记忆这种多态的特性。为什么子类的引用不能用来指向父类的对象呢?我在这里通俗给大家讲解一下:就以上面的例子来说,我们能说“狗是一种动物”,但是不能说“动物是一种狗”,狗和动物是父类和子类的继承关系,它们的从属是不能颠倒的。当父类的引用指向子类的对象时,该对象将只是看成一种特殊的父类(里面有重写的方法和属性),反之,一个子类的引用来指向父类的对象是不可行的!!
三.类
This关键字
B、this关键字
1.this关键字代表当前对象
this.属性 操作当前对象的属性
this.方法 调用当前对象的方法。
2.封装对象的属性的时候,经常会使用this关键字。
3.当getter和setter函数参数名和成员函数名重合的时候,可以使用this区别。
方法的重写与重载
子类如果对继承的父类的方法不满意(不适合),可以自己编写继承的方法,这种方式就称为方法的重写。当调用方法时会优先调用子类的方法。
方法重载
在同一个类中处理不同数据的多个相同方法名的多态手段。
方法重写:
相对继承而言,子类中对父类已经存在的方法进行区别化的修改。