Java局部内部类

局部内部类是指在一个方法中定义的内部类。示例代码如下:

public class Test { public void method() {  class Inner {   // 局部内部类
  }
 }
}1234567复制代码类型:[java]

局部内部类有如下特点:

1)局部内部类与局部变量一样,不能使用访问控制修饰符(public、private和protected)和static修饰符修饰。

2)局部内部类只在当前方法中有效。

public class Test {
 Inner i = new Inner(); // 编译出错
 Test.Inner ti = new Test.Inner(); // 编译出错
 Test.Inner ti2 = new Test().new Inner(); // 编译出错
 public void method() {  class Inner{

  }
  Inner i = new Inner();
 }
}1234567891011复制代码类型:[java]

3)局部内部类中不能定义static成员。

4)局部内部类中还可以包含内部类,但是这些内部类也不能使用访问控制修饰符(public、private和protected)和static修饰符修饰。

5)在局部内部类中可以访问外部类的所有成员。

6)在局部内部类中只可以访问当前方法中final类型的参数与变量。如果方法中的成员与外部类中的成员同名,则可以使用<OuterClassName>.this.<MemberName>的形式访问外部类中的成员。

public class Test { int a = 0; int d = 0; public void method() {  int b = 0;  final int c = 0;  final int d = 10;  class Inner {   int a2 = a; // 访问外部类中的成员
   // int b2 = b; // 编译出错
   int c2 = c; // 访问方法中的成员
   int d2 = d; // 访问方法中的成员
   int d3 = Test.this.d; //访问外部类中的成员
  }
  Inner i = new Inner();
  System.out.println(i.d2); // 输出10
  System.out.println(i.d3); // 输出0
 } public static void main(String[] args) {
  Test t = new Test();
  t.method();
 }
}
(0)

相关推荐

  • java函数方法详解(简单易懂)

    方法(函数) 函数的组成是: 访问修饰符 返回值 函数名(形式参数) { 函数内容; } 更多java函数方法详解视频课程学习地址:https://ke.qq.com/course/149432  有 ...

  • Java基础之:访问修饰符

    Java基础之:访问修饰符 java提供四种访问控制修饰符号控制方法和属性(成员变量/字段)的访问权限(范围): 1) 公开级别:用public 修饰,对外公开 2) 受保护级别:用protected ...

  • Java基本概念:内部类

    一.简介 描述: 很多时候我们创建类的对象的时候并不需要使用很多次,每次只使用一次,这个时候我们就可以使用内部类了. 内部类不是在一个java源文件中编写两个平行的类,而是在一个类的内部再定义另外一个 ...

  • 解析Java编程思想--内部类

    一个类的定义可以放在另一个类的定义内,它叫做内部类.内部类是一种非常有用的特性,因为它可以让你将逻辑相关的类组织在一起,并且控制类的视觉效果.但我们必须认识到,内部类和组合是截然不同的概念.在最初,内 ...

  • 中国台北故宫博物院藏明代画家戴进的水墨山水代表作局部大图欣赏

    明 戴进 <风雨归舟图> 立轴,绢本,淡设色,纵143厘米×横81.8厘米,中国台北故宫博物院藏. 明 戴进 <风雨归舟图> 局部大图 <风雨归舟图>是明代画家戴进 ...

  • JAVA多线程学习笔记整理

    多线程: 三种创建方法 继承Thread类,以线程运行内容重写run方法,创建Thread对象并用start方法启动该线程. (匿名内部类) (Lambda表达式) 实现Runable接口,以线程运行 ...

  • 为什么要选择学习Java?适合零基础的初学者的文章

    我经常收到这样的问题:"要学习的第一门编程语言是什么?" Java是一门好的编程语言吗?"和" Java是适合初学者的好的第一门编程语言,还是我应该从Java或 ...

  • Java高并发21-AQS在共享,独占场景下的源码介绍

    一.AQS--锁的底层支持 1.AQS是什么 AQS是AbstractQueuedSychronizer的简称,即抽象同步队列的简称,这是实现同步器的重要组件,是一个抽象类,虽然在实际工作中很烧用到它 ...

  • 佛罗伦萨圣马可博物馆|你还记得《局部》第一季吗?

    佛罗伦萨圣马可大教堂的修道院是一座美轮美奂的博物馆,它不仅有珍贵的文艺复兴时期的画作(包括安杰利科修士.巴托洛米欧修士等画家),博物馆本身的建筑--圣马可修道院--也是不朽的文艺复兴式建筑杰作,美第奇 ...

  • 局部封闭治疗骨科门诊常见疾病

    局部封闭治疗骨科门诊常见疾病

  • Java基础之:泛型

    Java基础之:泛型 在不使用泛型的情况下,在ArrayList 中,添加3个Dog. Dog对象含有name 和 age, 并输出name 和 age (要求使用getXxx()). package ...