Java面向对象高级-内部类-局部内部类

基本介绍

        一个类的内部又完整的嵌套了另一个内部类结构。被嵌套的类称为内部类(inner class)、嵌套其他类的类称为外部类(outer class)。是我们类的第五大成员【属性、方法、构造器、代码块、内部类】,内部类最大的特点就是可以直接访问私有属性,并且可以体现类与类之间的包含关系

基本语法

class Outer{//外部类
class Inner{//内部类

    }
class Other{}//外部其他类
}

案例

public class InnerClass01 { //外部其他类
public static void main(String[] args) {
    }
}
class Outer { //外部类
private int n1 = 100;//属性
public Outer(int n1) {//构造器
this.n1 = n1;
    }
public void m1() {//方法
System.out.println("m1()");
    }
{//代码块
System.out.println("代码块...");
}
class Inner { //内部类, 在 Outer类的内部
    }
}

内部类的分类

定义在外部类局部位置上:

1、局部内部类(有类名)

2、匿名内部类(没有类名)

定义在外部类的成员位置上:

1、成员内部类(没用static修饰)

2、静态内部类(使用static修饰)


局部内部类的使用

1、可以直接访问外部类的所有成员,包含私有

2、不能添加访问修饰符,因为它的地位就是一个局部变量,局部变量是不能使用修饰符的。但可以使用fianl修饰,因为局部变量可以使用final

3、作用域:仅仅在定义它的方法或者代码块中

4、局部类---访问----外部类的成员 [访问方式:直接访问]

5、外部类---访问----局部类的成员[访问方式:创建对象,在访问,必须在作用域内]

6、外部其它类---不能访问-----局部内部类(因为局部内部类地位是一个局部变量)

7、如果外部类和局部内部类的成员重名是,默认遵循就近原则,如果想访问外部类的成员,则使用(外部类名.this.成员)去访问

举例

public class LocalInnerClass {
public static void main(String[] args) {
Outer02 outer02 = new Outer02();
outer02.m1();
System.out.println("outer02 的 hashcode=" + outer02);
}
    }
class Outer02 {//外部类
    private int n1 = 100;
private void m2() {
System.out.println("Outer02 m2()");
   }//私有方法
public void m1(){//方法
final class Inner02 {//局部内部类(本质仍然是一个类)
    private int n1 = 800;
    public void f1() {
            System.out.println("n1=" + n1 + " 外部类的 n1=" + Outer02.this.n1);
            System.out.println("Outer02.this hashcode=" + Outer02.this);
                m2();
            }
        }
Inner02 inner02 = new Inner02();
inner02.f1();
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值