------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1. 面向对象程序设计概述:
(1) OOP: Object OrientedProgramming,面向对对象的程序设计。所谓“对象”在显式支持面向对象的语言中,一般是指类在内存中装载的实例,具有相关的成员变量和成员函数(也称为:方法)。面向对象的程序设计完全不同于传统的面向过程的程序设计,它大大地降低了软件开发的难度,使编程就像搭积木一样简单,是当今电脑编程的一股势不可挡的潮流。
注意:OOP更加适用于解决规模较大的问题。对于一些规模较小的问题,将其分解为过程的开发方式比较理想。
(2) 类:它是构造对象的模板或蓝图。我们可以将类想象成制作小甜饼的切割机,将对象想象成小甜饼。由类构造(construct)对象的过程称为创建类的实例(instance)。
(3) 对象的三个主要特性:
(1) 对象的行为(behavior)
(2) 对象的状态(state)
(3) 对象的标识(identity)
(4) 类之间的关系:
(1)依赖(uses-a)
(2)聚合(has-a)
(3)继承(is-a)
设计类时,应该尽可能的将相互依赖的类减至最少。如果类A不知道类B的存在,他就不会关心B的任何改变,用软件工程的术语来说,就是让类之间的耦合度最小。
2. 成员变量和局部变量的区别
成员变量:成员变量定义在类中,在整个类中都可以访问。
成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
成员变量有初始值。
局部变量:局部变量只定义在局部范围内,如:函数内,语句块内。
局部变量存在于栈内存中。
作用的范围结束,变量空间会自动释放。
局部变量没有默认初始化值。
3. 封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:将变化隔离,便于使用,提供重用性,提高安全性。
封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。
4.this关键字有两种用处:
1, 代表其所在函数所属对象的引用,即本类对象的引用。
2, 本类的其他构造器。此用途时this只能放在构造函数的第一行。
Super关键字的两种用途:
1, 父类对象的引用。
2, 父类构造器。此用途时this只能放在构造函数的第一行。
5.静态:
static关键字用于修饰成员(成员变量和成员函数)。被修饰后的成员具有以下特点:随着类的加载而加载,优先于对象存在,被所有的对象所共享,可以直接被类名调用。使用注意:静态方法只能访问静态成员,静态方法中不可以写this,super关键字,主函数是静态的。
静态代码块在类加载的时候加载,且只加载一次。
Person p = new Person();
这句话做了哪些事情:
1, 因为new用到了Person.class,所以会先找到Person.class文件加载到内存中。
2, 执行该类中的static代码块,如果有的话,给Person.class类进行初始化。
3, 在堆内存中开辟空间,分配内存地址。
4, 在堆内存中建立对象的特有属性。并进行默认初始化。
5, 对属性进行显示初始化。
6, 对对象进行构造代码块初始化。
7, 对对象进行对应的构造函数初始化。
8, 将内存地址赋给栈内存中的对象p变量
什么时候使用静态:
(1) 当对象中出现共享数据时,该数据被静态所修饰。对象中的特有数据要定义成非静态存放在堆内存中。
(2) 当功能内部没有访问到非静态数据(对象的特有数据),那么该函数就可以被定义成静态的。