JavaOO05

public:可以被任何对象访问
protected:可以被同包的类以及不同包的子类所访问
默认访问级别:可以被同包的类访问
private:只有类本身可以访问

标准Java类:
(1)必须要有公共无参构造
(2)必须为私有属性提供符合命名规范的get和set方法

封装的好处:
(1)类的成员变量可以成为只读或者只写的。
(2)类可以对存储在其他成员变量中的内容有一个整体的控制。
(3)类的用户不需要知道类是如何存储数据的。

static修饰属性:
1、现象:用static修饰的属性,全类共享一个值。那么这个属性不再存放在每个对象身上,而是全类共享。无论哪个对象对该属性进行了改动,全类所有对象都被改动了。
2、原因:static的属性是单独存放在内存中的静态区的,而不是存放在每个对象身上的,所以它可以通过 类名.的方式就可以操作。
(3)特殊操作:它可以通过 类名.的方式就可以操作。
----这是结果而不是设计static的原因。
注意:能用static修饰的属性其实是极少的。
---除非你能真正保证它是全类共享的一个值,否则不允许。

这个name到底什么时候放进内存的呢?
它会在程序运行之前,即加载期的时候就会产生并放入。

使用最多?--常量属性可以无脑设计加“static”
public static final....

static变量属性?---班级人数


static修饰方法:
1、现象:
(1)可以直接通过类名的方式就可以操作
(2)static的方法中不能出现this和super
(3)static的方法中不能访问非static的属性行为
2、原因:
加载期,会首先加载静态方法和属性,这个时候还没有对象产生,在加载静态方法的时候还不认识非静态的属性或非静态的方法,因此会报错。
3、特殊设计:
只有工具类的工具方法,才能定义为static。
如果一个方法不需要执行到对象本身相关的数据或行为的时候,那么这个方法才可以定义为static


实例初始化块:能在一个类里写的第四种东西(属性、初始化块、构造、行为)
1、书写位置:写在属性之后,构造之前
2、什么时候调用?--没有方法声明,不知道参数列表,甚至不知道方法名
默认在初始化对象(new对象)被自动调用,每产生一个对象,就被调用一次。
分析:
1.都是代码块,都已经有当前对象,所以凡是可以写在初始化块中的代码,也可以写在构造方法中
2.构造方法内部的代码是在实例初始化之后执行的,最终效果以构造为准。
结论:初始化一个对象要写的代码语句,宁愿写在构造方法里面。
咋用呢?
本来所有构造方法都要执行的共有代码,可以写在实例初始化快,只需要一次。

静态初始化块:能在一个类里写的第四种东西(属性、初始化块、构造、行为)
1、书写位置:写在属性之后,构造之前
2、什么时候调用?--没有方法声明,不知道参数列表,甚至不知道方法名
默认在类加载的时候被自动调用,类只加载一次,所以这个代码只执行一次。
分析:
1.这是目前我们学的唯一一个在加载期就能执行的代码。
2.在加载期做事情,消耗的是加载期的时间,不会影响运行期时间。
结论:静态初始化块非常有用!特别是一些大型项目,预先需要准备的动作可以写在里面,从而不影响运行时间。


可以在一个类中定义的第五部分 ----内部类
内部类分类:成员内部类 局部内部类

成员内部类
书写位置:直接写在内部类本身当中,与外部类的属性,构造,行为,初始化块平行。

成员内部类除了定义的位置特殊之外,它仍是一个完整的类
表现在:1.可以拥有属性、构造、行为、初始化块、内部类。
2.它可以是一个独立的类,所以有独立的class文件
3.成员内部类可以像属性、行为、初始化块一样,用static修饰 ---静态内部类

原文地址:https://www.cnblogs.com/rookie97/p/11637192.html