类的高级概念

类的高级概念

封装:
用于组装类的属性和行为,并且通过访问修饰符以及方法的包装来类的成员的方式
是oop的四大特征之一

优点:
1、 类的成员变量通过访问器和修改器进行控制,可以是只读或只写,不再是外部可以任意操作
2、 类可以通过对方法的控制,完成对成员变量的内容的整体控制,比如:输入口令(XXXXXXX),只有在输入正确的情况下,才可以进行访问
3、 类还可以改变一个成员变量的数据类型,从而让类的调用不能轻易地、凭借经验就能判断出类的成员变量。比如:birthday、变成int year、month、day

Static可选修饰符:

修饰全局变量时,可以被称为静态变量或类变量,经过static修饰的全局变量,已经与对象无关,直接上升为类的变量,它的数据已经不存在每个单独的对象身上,而是存在方法区中的数据块的静态区域中,非静态成员变量,必须要等到实例化对象之后,才可以调用,而静态方法,在类加载之后,就可以直接调用。

在修饰方法时,对应的方法可以被称为类方法,跟类变量一样,同样与对象已经无关,直接上升为类的行为,非静态方法,必须要等到实例化对象后,才可以调用,而静态方法,在类加载之后,就可以直接调用。

Static修饰的内容存在于内存的时机是:类加载的时候

Static在修饰全局变量时,一般用于修饰常量,主要目的:节约内存,将变量定义在静态区域中,而不是每个对象本身。

Stitic在 修饰方法时,一般用于修饰工具类的工具方法,比如:arrays类、Stringutils类,包括超级数组类。

静态方法中,不能访问非静态属性,也指方法,原因:
1、 静态方法加载时,非静态属性,方法根本就还没有调用
2、 假设可以,那么如果存在成千上万对象时,我在调用谁的属性,或者是调用谁的行为

Static无法修饰构造函数,因为static修饰的属性,或行为都与对象无关,但是构造是专门产生对象的

初始化块:实例初始化,静态初始化
实力初始化块:主要用于初始化成员变量,一般是对象实例化时,才会执行,并且是实例一次,执行一次。它执行在构造函数执行代码的第3部和第4部之间。可以使用有参构造代替

静态初始化块:只在类加载时,执行一次