类与对象的关系
类、现实事物的描述
对象、该事物中事实存在的个体。
对象本身已知的事物 称为实例变量。代表对象的状态
对象可以执行的动作 称为方法。代表对象的行为
成员变量与局部变量的区别
1、作用范围
成员变量、定义在类中,作用整个类。
局部变量、只在所属函数或代码段中有效。
2、存储情况
成员变量、存储在堆内存中,随着对象存在而存在;当对象被垃圾回收机制回收后,该对象中的成员变量才会消失。
局部变量、存储在栈内存中,当函数调用或语句代码段执行时才会存在,当执行完毕后局部变量才会自动消失。
3、初始化情况
成员变量、在堆内存中有默认初始化值。
局部变量、必须手动初始化才可被使用。
匿名对象
没有名字的对象,是定义对象的一种简易方式
new Class().Fun();
1、只进行一次调用时使用。
2、可作为参数传递。
封装(Encapsulation)
指隐藏对象的属性和实现细节,仅对外提供公共调用方式。
好处:变化隔离、便于使用、提高重用性、提高安全性。
私有是封装的一种形式。
构造函数
方法名与类名相同。没有返回值类型。没有具体返回值。
在对象建立时被直接调用。
作用:用于给对象进行初始化。
在一个类中可以定义多个构造函数,以进行不同的初始化。多个构造函数存在于类中是以重载的方式体现。
构造函数与一般函数的区别:
1、一般函数、是用户定义对象应该具备的功能。
构造函数、是在对象建立之前,在对象建立时应该具备的一些功能;也就是对象的初始化内容。
2、一般函数、是对象建立后,在调用该功能是才会执行。
构造函数、是在对象建立时被调用,给对象初始化。
this关键字
代表的是对象的引用,也就是说this指向一个对象,就是所在函数所属对象的的引用。
当局部变量和成员变量重名时,为以示区分,可用this关键字来完成。
构造函数之间的互相调用。称为this语句。this语句必须写在构造函数第一行。
this.构造函数(); this();
局部代码块
格式:
{ //Code; }
在类下面的局部代码块被称为构造代码段,用于给所有对象进行初始化。它在构造函数之前执行。
static关键字
静态、用户修饰成员(成员变量、成员方法)
特点:
1、静态修饰的成员随着类的加载而加载。
2、级别优先于对象。
3、静态成员被所有对象所共享。
4、类名直接调用。
注意事项:
1、静态方法只能访问静态成员。非静态方法既可以访问静态成员也可以访问非静态成员。
2、静态方法不可定义this、super关键字。因this代表对象,静态的优先级别高于对象,静态存在时还没有对象。
好处:静态成员多一种调用方式。Class.静态成员;对象.静态成员;
弊端:访问局限性,静态方法只能访问静态成员。
什么时候用静态?
成员变量、当成员变量所存储的数据,每个对象都一样时,数据被共享时。定义为静态的。
成员函数、当成员函数内并没有访问对象中特有的数据时,就将函数定义为静态的。
静态代码块:
static { //Code; }
作用:
当类加载内存时,需要进行一些内容的执行来完成类的初始化。需要用到静态代码块来完成。
执行特点:
当类加载时就执行静态代码块,而且只执行一次,执行优先级高于主函数。