内部类,代码块

时间:2022-08-07 19:29:03

内部类:

概念:

将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类。其他类也称为外部类。

 

内部类的分类:

成员内部类  局部内部类

 

成员内部类:

定义在外部类中的成员位置。与类中的成员变量相似,可通过外部类对象进行访问

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   可用于给静态变量赋值,用来给类进行初始化。