javaOO——封装static成员内部类
Posted libobo22
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaOO——封装static成员内部类相关的知识,希望对你有一定的参考价值。
访问修饰符:
包外 子类 包内 类内
public yes yes yes yes
protected no yes yes yes
default no no yes yes
private no no no yes
包外 子类 包内 类内
public yes yes yes yes
protected no yes yes yes
default no no yes yes
private no no no yes
标准Java类----(JavaBean)
(1)必须要有公共无参构造
(2)必须为私有属性提供符合命名规范的get和set方法
(1)必须要有公共无参构造
(2)必须为私有属性提供符合命名规范的get和set方法
封装的好处:
1、类的成员变量可以成为只读或者只写的
2、类可以对存储在其成员变量张的内容有一个整体的控制
3、类的用户不需要知道类是如何存储数据的
1、类的成员变量可以成为只读或者只写的
2、类可以对存储在其成员变量张的内容有一个整体的控制
3、类的用户不需要知道类是如何存储数据的
static修饰属性
1、现象:用static修饰的属性,全类共享一个值。
static修饰的属性将不再存放在每个对象身上,而是全类共享。
无论哪个对象对该属性进行了改动,全类所有对象都被改动了。
2、原因:static的属性是单独存放在内存中的静态区,而不是存放在每个对象身上的。
所以它可以直接通过 类名. 的方式就可以操作。
3、特殊操作,它可以直接通过 类名. 的方式就可以操作
---这是结果而不是设计static的原因
注意:能用static修饰的属性其实是极少的,除非你能真正保证它是全类共享的一个值,否则是不允许的。
static修饰的属性什么时候放入内存呢?
它会在程序运行之前,即加载期的时候就会产生并让放入。
它会在程序运行之前,即加载期的时候就会产生并让放入。
使用最多?--常量属性可以无脑设计加“static”
public static final .....
public static final .....
static修饰方法
1、现象:
(1)可以直接通过 类名. 的方式就可以操作
(2)static的方法中不能出现this和super
(3)static的方法中,不能访问非static的属性和行为
2、原因:
加载期,会首先加载静态方法和属性,这个时候还没有对象产生。
在加载静态方法的时候还不认识非静态的属性或非静态的方法,因此会报错。
3、特殊设计:
只有工具类的工具方法,才能定义为static。
---如果一个方法不需要执行到对象本身相关的数据或行为的时候,那么这个方法才可以定义为static
初始化块 ---能在一个类里面写的第四种东西(属性,初始化块,构造,行为)
1、书写位置:
写在属性之后,构造之前
2、什么时候第哦啊用?? ---没有方法声明,不知道参数列表,甚至不知道方法名
默认在初始化对象(new对象)被自动调用,每产生一个对象,就被调用一次。
分析:
1、都是代码块,都已经有当前对象,所以凡是可以写在初始化块中的代码,也可以写在构造函数中
2、构造方法内部的代码是在实例初始化之后执行的最终效果以构造为准。
1、书写位置:
写在属性之后,构造之前
2、什么时候第哦啊用?? ---没有方法声明,不知道参数列表,甚至不知道方法名
默认在初始化对象(new对象)被自动调用,每产生一个对象,就被调用一次。
分析:
1、都是代码块,都已经有当前对象,所以凡是可以写在初始化块中的代码,也可以写在构造函数中
2、构造方法内部的代码是在实例初始化之后执行的最终效果以构造为准。
结论:
初始化一个对象要写的代码语句,宁愿写在构造函数里面的。
初始化一个对象要写的代码语句,宁愿写在构造函数里面的。
如何使用呢?
本类所有构造方式都要执行的共有代码,可以写在实例初始化块,只需要写一次。
这个功能和this()一样。
本类所有构造方式都要执行的共有代码,可以写在实例初始化块,只需要写一次。
这个功能和this()一样。
初始化块在什么时候执行?
分配空间
划分属性
初始化属性
(执行初始化块)
执行构造函数中的代码
静态初始化块
1、书写位置:
写在属性之后,构造之前
2、什么时候第哦啊用?? ---没有方法声明,不知道参数列表,甚至不知道方法名
默认在类加载的时候就被自动调用。由于一个类只加载一次(第一次使用的时候),所以这个代码只执行一次。
分析:
1、这是目前我们学的唯一一个在加载期就能执行的代码。
2、在加载期做事情,消耗的是加载期的时间,不会影响运行期事件
1、书写位置:
写在属性之后,构造之前
2、什么时候第哦啊用?? ---没有方法声明,不知道参数列表,甚至不知道方法名
默认在类加载的时候就被自动调用。由于一个类只加载一次(第一次使用的时候),所以这个代码只执行一次。
分析:
1、这是目前我们学的唯一一个在加载期就能执行的代码。
2、在加载期做事情,消耗的是加载期的时间,不会影响运行期事件
结论:
静态初始化块,挺有用的。
特别是一些大型项目,一些预先需要准备的动过可以写在里面,从而不影响运行时间。
静态初始化块,挺有用的。
特别是一些大型项目,一些预先需要准备的动过可以写在里面,从而不影响运行时间。
可以在一个类当中定义的第五部分 --内部类
内部类分类:1、成员内部类 2、局部内部类
内部类分类:1、成员内部类 2、局部内部类
成员内部类
书写位置:直接写在外部类本身当中,与外部类的属性,构造,行为,初始化块平行。
书写位置:直接写在外部类本身当中,与外部类的属性,构造,行为,初始化块平行。
成员内部类除了定义的位置特殊之外,它仍是一个完整的类。
表现在:
1、可以拥有属性,构造,行为,初始化块,甚至是它的内部类。
2、它是一个独立的类,所以有独立的class文件
3、成员内部类可以像属性、行为、初始化块一样,用static修饰 ---静态内部类
表现在:
1、可以拥有属性,构造,行为,初始化块,甚至是它的内部类。
2、它是一个独立的类,所以有独立的class文件
3、成员内部类可以像属性、行为、初始化块一样,用static修饰 ---静态内部类
以上是关于javaOO——封装static成员内部类的主要内容,如果未能解决你的问题,请参考以下文章