java inner class_Java Inner Class 内部类
更多 Java 基础知识方面的文章,请参见文集《Java 基础知识》
成员内部类 member inner class
在类的内部
可以访问外部类的所有属性,包括 static 和 final,因此可以修改外部类
如下所示:
内部类 Inner 可以访问外部类 Outer 的成员变量 i
外部类 Outer 可以使用内部类 Inner
如果想在其他地方使用内部类 Inner,需要通过外部类的对象来访问
public class InnerClass_Test {
public static void main(String[] args) {
Outer outer = new Outer();
outer.f1();
// 如果想在其他地方使用内部类 Inner,需要通过外部类的对象来访问
// Outer.Inner inner = new Outer.Inner() 编译错误
Outer.Inner inner = outer.new Inner();
inner.f2();
}
}
class Outer {
private int i = 1;
public void f1() {
// 外部类 Outer 可以使用内部类 Inner
Inner i = new Inner();
i.f2();
}
// 内部类 Inner 可以访问外部类 Outer 的成员变量
class Inner {
public void f2() {
i = 2;
}
}
}
局部内部类 local inner class
在类的方法的内部定义并使用
不能在方法的外部访问内部类
内部类只能访问方法中的 final 变量,不能访问方法外的变量
例如:
public class InnerClass_Test {
public static void main(String[] args) {
Outer outer = new Outer();
outer.f1();
}
}
class Outer {
public void f1() {
// 在类的方法的内部
class Inner {
public void f2() {
// do something
}
}
Inner i = new Inner();
i.f2();
}
}
匿名内部类 anonymous inner class
继承式
public class InnerClass_Test {
public static void main(String[] args) {
Car c = new Car() {
public void f() {
System.out.println("This is BMW");
}
};
c.f();
}
}
class Car {
public void f() {
System.out.println("This is car");
}
}
接口式
public class InnerClass_Test {
public static void main(String[] args) {
Run r = new Run() {
public void f() {
System.out.println("This is BMW running");
}
};
r.f();
}
}
interface Run {
void f();
}
参数式
public class InnerClass_Test {
public static void main(String[] args) {
invoke(new Car() {
public void f() {
System.out.println("This is BMW");
}
});
}
public static void invoke(Car c) {
c.f();
}
}
class Car {
public void f() {
System.out.println("This is car");
}
}
静态嵌套类 static nested class
与成员内部类不同,在外部使用静态嵌套类,不需要通过外部类的对象来访问。
public class InnerClass_Test {
public static void main(String[] args) {
// 在外部使用静态嵌套类,不需要通过外部类的对象来访问
Outer.Nested_Outer n = new Outer.Nested_Outer();
n.f();
}
}
class Outer {
static class Nested_Outer {
public void f() {
System.out.println("This is nested class");
}
}
}
java inner class_Java Inner Class 内部类相关推荐
- java基础(十三)-----详解内部类——Java高级开发必须懂的
java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...
- java成员内部类_Java中的内部类(二)成员内部类
Java中的成员内部类(实例内部类):相当于类中的一个成员变量,下面通过一个例子来观察成员内部类的特点 public classOuter {//定义一个实例变量和一个静态变量 private int ...
- Java面向对象编程篇4——内部类
Java面向对象编程篇4--内部类 1.内部类的概念 当一个类的定义出现在另外一个类的类体中时,那么这个类叫做内部类 (Inner),而这个内部类所在的类叫做外部类(Outer). 类中的内容:成员变 ...
- java类修饰词和内部类详解
java类修饰词和内部类详解 控制属性: 同一类内 同一包内 子类 所有类 public 可 可 可 ...
- Java编程笔记7:内部类
Java编程笔记7:内部类 图源:PHP中文网 所谓的内部类,其实就是定义在类中的类.这和Java编程笔记6:接口 - 魔芋红茶's blog (icexmoon.xyz)中提到的接口嵌套的方式有点相 ...
- java中class_JAVA中的Class类
前言 Class类是一个看起来熟悉又看起来陌生的类,平时常常用到它,但却从来没有创建过它的实例对象,因为它的构造函数是私有的,只有虚拟机才能够创建它的对象,但是它绝对是一个核心类,以至于要学好java ...
- java中有几种内部类,Java中的四种内部类
四种内部类 在Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的 内部类一般来说包括这四种:静态内部类.匿名内部类.成员内部类和局部内部类,下面我们一一介绍 ...
- java中class_Java中Class对象详解
https://blog.csdn.net/mcryeasy/article/details/52344729 待优化整理 总结 Class类简介 在java世界里,一切皆对象.从某种意义上来说,ja ...
- Java面向对象(21)--内部类
当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使用内部类. 在Java中,允许一个类的定义位于另一个类的内部,前者称 ...
- JAVA进阶开发之(内部类概述)
匿名内部类(相当于此类没有名字): 1.什么是内部类:在类的内部又定义了一个新的类 2.内部类的分类: 静态内部类:类似静态变量 实例内部类:类似实例变量 局部内部类:类似局部变量 3.使用内部类编写 ...
最新文章
- [改善Java代码]用整数类型处理货币
- ATOM editor recommended by Sean
- 开源项目|从0到1教你搭建一个适配于智能车的目标检测系统
- 优地机器人厂家_2019中国人工智能机器人企业TOP30榜单发布 优地科技跻身前十...
- 记录下最近使用到的sql语句
- c++容器之vector
- Linux PS 命令详解
- 一个学习Python的好链接
- Exchange2013 企业部署解决方案-Part 2
- 以盛唐气象,浇胸中块垒:熊逸《唐诗50讲》学习笔记汇总
- Monitor线程同步
- 骑士人才系统4.0,5.0火车头数据抓取
- Apache 绿色版本官方版本下载
- centos下espeak文本转语音的代码实现
- Linux内核4.14版本——mmc core(7)——mmc core主模块(3)总线io setting相关(struct mmc_ios)
- 在Mac系统中将html网页转成PDF格式
- 下载IE6安装文件到本地的方法
- 那些年不容错过的115家硅谷IT公司
- 【Unity3D基础2-9】Unity3D烘焙系统的使用
- 《2021大数据产业年度创新服务企业》榜重磅发布丨金猿奖