梳理一下面向对象学习中的知识。
面向对象的概念
·面向对象是相对与面向过程而言的,并且面向对象基于面向过程。
·面向对象和面向过程都是一种思想。
·面向过程强调的是功能行为本身
·面向对象则是讲功能封装进对象,强调具备了功能的对象,并置身其外调用对象。
面向对象的三个特征
·封装
·继承
·多态
关于特征的扩展详解:
所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。
所谓继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;
所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。
(以上引自 )关于封装:
封装是指隐藏对象的属性和具体实现细节,仅对外提供公共访问方式。
·封装的优点:
·让变化隔离
·便于使用
·提高复用性
·提高安全性
Principle:
·将不需要对外提供的内容隐藏起来。
·把属性隐藏,仅对外提供公共方法对其访问。
this关键字:
this代表它所在函数所属对象。
简单说,那个对象调用this所属函数,哪个对象就用this代表。
static静态关键字:
·static用于修饰成员变量以及成员函数。
·被修饰后的成员具备以下特点:
·随着类的加载而加载;
·优先于对象而存在;
·被所有对象所共享;
·可以直接被类名调用;
notice:
·静态方法中不可以写this、super等关键字;
·主函数必须是静态的。
静态的利与弊:
好处:对对象的共享数据进行单独空间的存储,节省内存。没有必要每个对象都存储一份。
缺点:生命周期过长。而且访问出现局限性。
什么时候使用静态:
静态变量:当对象中出现共享数据时;
静态函数:当功能内部没有访问到非静态数据时,该功能可以定义成静态函数。
对象的初始化过程:
Person p=new Person("张三",20)
1,因为new用到了Person.class,所以会先找到Person.class并加载到内存;
2,执行该类中的static静态代码块(如果有的),初始化该类;
3,在堆内存中开辟空间,分配内存地址;
4,在堆内存中建立对象的特有属性,并进行默认初始化;
5,对属性进行显示初始化;
6,对对象进行构造代码块初始化;
7,对对象进行与之对应的构造函数初始化;
8,将内存地址赋给栈内存中的p变量。
final关键字
1,可以修饰类、变量、函数;
2,类被final修饰之后不能被继承,
3,被final修饰的方法不可以被复写;
4,被final修饰的变量只能赋值一次,既可以修饰member variable,又可以修饰local variable。
——常量的书写规范是所有字母都大写,如果由多个单词,单词之间以下划线连接。
多态:
多态的体现:
父类的应用指向了自己的子类对象,父类的引用也可以接收自己的子类对象。
前提:
类与类之间有关系,存在覆盖。
多态的好处:
多态的出现大大提高了程序的扩展性。
多态的弊端:
但是只能使用父类的引用访问父类中的成员
notice:
多态在成员函数中的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法,如果有编译成功,没有则失败。
运行时期:参阅对象所属类中是否有调用的方法。
在成员变量中的特点:
无论编译或者运行,都指向引用型变量所属的类。