内部类,代码块
内部类:
概念:
将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类。其他类也称为外部类。
内部类的分类:
成员内部类 局部内部类
成员内部类:
定义在外部类中的成员位置。与类中的成员变量相似,可通过外部类对象进行访问
l 定义格式
class 外部类 {
修饰符 class 内部类 {
//其他代码
}
}
l 创建成员内部类方式
外部类名.内部类名 变量名 = new 外部类名().new 内部类名();
局部内部类:
调用局部类中的方法:
public class A{
public void b(){
class AA{
public void asd(){
System.out.println(“zxc”);
}
}
AA a=new AA();
a.asd();
}
}
内部类实际应用——匿名内部类
内部类是为了应对更为复杂的类间关系。查看源代码中会涉及到,而在日常业务中很难遇到,这里不做赘述。
最常用到的内部类就是匿名内部类,它是局部内部类的一种。
定义的匿名内部类有两个含义:
n 临时定义某一指定类型的子类
n 定义后即刻创建刚刚定义的这个子类的对象
格式:
new 父类或接口(){
//进行方法重写
}.方法();
包:
java的包,其实就是我们电脑系统中的文件夹,包里存放的是类文件。
包的声明:通常使用公司网址反写,可以有多层包,包名采用全部小写字母,多层包之间用”.”连接
类中包的声明格式:
package 包名.包名.包名…;
注意:声明包的语句,必须写在程序有效代码的第一行(注释不算)
访问修饰符:
在Java中提供了四种访问权限,使用不同的访问权限时,被修饰的内容会有不同的访问权限,以下表来说明不同权限的访问能力:
|
public |
protected |
default |
private |
同一类中 |
√ |
√ |
√ |
√ |
同一包中(子类与无关类) |
√ |
√ |
√ |
|
不同包的子类 |
√ |
√ |
|
|
不同包中的无关类 |
√ |
|
|
|
代码块:
局部代码块:
局部代码块是定义在方法或语句中
特点:
l 以 {} 划定的代码区域,此时只需要关注作用域的不同即可
l 方法和类都是以代码块的方式划定边界的
构造代码块:
构造代码块是定义在类中成员位置的代码块
特点:
l 优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作
l 每创建一个对象均会执行一次构造代码块。
静态代码块:
静态代码块是定义在成员位置,使用static修饰的代码块。
特点:
l 它优先于主方法执行、优先于构造代码块执行,当以任意形式第一次使用到该类时执行。
l 该类不管创建多少对象,静态代码块只执行一次。
l 可用于给静态变量赋值,用来给类进行初始化。