Java中的成员内部类(实例内部类):相当于类中的一个成员变量,下面通过一个例子来观察成员内部类的特点

public classOuter {//定义一个实例变量和一个静态变量

private inta;private static intb;//定义一个静态方法和一个非静态方法

public static voidsay(){}public voidtest(){//在外部类中调用内部类的属性和方法

Inner inner = this.newInner();

inner.d= 1; //通过创建内部类实例来调用内部类属性

inner.walk(); //通过创建内部类实例来调用内部类方法

}//成员内部类

public classInner{//定义一个静态常量

static final int m = 1;//在内部类中定义一个静态变量和一个实例变量//static int c; 编译出错

intd;//定义一个匿名代码块和一个静态代码块

{}//static{} 编译出错//定义一个静态方法和一个普通方法//public static void go(){} 编译出错

public voidwalk(){//在内部类中调用外部类的属性和方法

a = 1;

b= 1;

say();

test();//内部类可以直接访问外部类的所有属性和方法

}

}

}

总结:1、成员内部类可以由public protected default private修饰

2、成员内部类是依赖于外部类的对象而存在的,在创建成员内部类的实例时,外部类的实例必须已经存在。

3、成员内部类可以包含哪些内容

1)匿名代码块

2)非静态属性

3)非静态方法

注意:成员内部类中不能有静态属性和方法但可以有静态常量(即用static final修饰的属性),因为在类加载时会初始化static修饰的内容,而成员内部类必须依赖于内部类对象,即成员内部类要在外部类加载之后加载,所以不能包含静态的变量和方法。使用final修饰的静态变量类加载时会自动初始化其值,将其作为一个常量,所以可以出现在内部类中。

4、外部类访问内部类

外部类可以通过创建成员内部类实例来访问成员内部类中的属性和方法

5、成员内部类访问外部类

成员内部类可以直接访问外部类的所有属性和方法

注意: 如果成员内部类B与外部类A包含同名的成员,那么在类B中, this.v表示类B的成员, A.this.v表示类A的成员。

6、创建内部类实例的方法

1)在外部类中创建:内部类名 name = this.new 内部类名();

2)在非外部类中创建:外部类名.内部类名 name = new 外部类名().new 内部类名();

java成员内部类_Java中的内部类(二)成员内部类相关推荐

  1. java内部类 缺点_Java中的内部类及其优势

    Java中提供了定义内部类的选择,这一机制使得代码的书写更为方便和优雅(功能上相关的代码被紧密的组织在了一起). 需要注意的是,内部类和传统的组合(即将一个类的实体定义为另一个类的成员)是完全不同的, ...

  2. java打印二维数组_Java中如何打印二维数组

    在Java中如何打印二维数组 1.直接使用数组自带的toString------ 打印出数组的地址 2.使用Arrays.toString()---------- 打印每个二维数组的地址 3.使用Ar ...

  3. java 难度_java中难度大一点的面试题

    1.请大概描述一下Vector和ArrayList的区别,Hashtable和HashMap的区别.(5) (1)Vector和ArrayList的异同 实现原理,功能相同,可以互用 主要区别: Ve ...

  4. java 事务_Java中事务总结详解(精华)

    1.什么是JAVA事务? 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性 (is ...

  5. [转载] c++多态与java多态性_Java中的多态性

    参考链接: Java中的加法和串联 c++多态与java多态性 Polymorphism is one of the core concepts of OOPS paradigm. The meani ...

  6. java 且_JAVA中逻辑运算符“|”和“”与“||”和“”的用法

    1.使用规则: (1)& 可以用作逻辑与的运算符,表示逻辑与(and) a.当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false ...

  7. java 包装类_Java中的包装类

    Java中哪些需要包装类 它们将原始数据类型转换为对象.如果我们希望修改传递给方法的参数,则需要对象(因为基元类型是按值传递的). java.util包中的类只处理对象,因此在这种情况下包装类也有帮助 ...

  8. math java 计算_Java中的数学计算函数汇总

    Math类:  java.lang.Math类中包含基本的数字操作,如指数.对数.平方根和三角函数. java.math是一个包,提供用于执行任意精度整数(BigInteger)算法和任意精度小数(B ...

  9. java中的多态性_[转载] c++多态与java多态性_Java中的多态性

    参考链接: Java中的加法和串联 c++多态与java多态性 Polymorphism is one of the core concepts of OOPS paradigm. The meani ...

最新文章

  1. C++ 向量(vector) 的使用
  2. 偏移量详解-源自csna 菜鸟飞人
  3. 请分别介绍一下aof和rdb都有哪些优点?以及两者有何区别?
  4. javascript第一天
  5. 自底向上——知识图谱构建技术初探
  6. spark代码中添加logger_Spark RDD中Runtime流程解析
  7. IntelliJ IDEA优秀插件(编程通用)
  8. java并发:初探用户线程和守护线程
  9. JDBC中Statement接口提供的execute、executeQuery和executeUpdate之间的区别
  10. Axure RP 9
  11. 排序算法图解(一):冒泡排序与冒泡排序的优化
  12. 没错,中国程序员前景一片黑暗
  13. 新城易居程伟健:民宿集群,正在走向产业标准化的趋势!
  14. 诛仙mysql架设_目前最完整的诛仙私服架设教程
  15. 用html做自我介绍
  16. ansible常用模块
  17. 自己怎么开发一个软件app、如何开发一个app系统软件?
  18. GraphQL实战-第一篇-GraphQL介绍
  19. 用java流复制文件不能复制全,少几十兆!!
  20. 2022年全球与中国半导体NOR闪存芯片市场现状及未来发展趋势

热门文章

  1. mybatisplus 一次性执行多条SQL语句
  2. spring整合rabbitMQ最新版
  3. linux 环境 安装nginx
  4. 第四篇:断路器(Hystrix)(Finchley版本)V2.0_dev
  5. java 静态方法_80后程序员,教你学Java核心技术:用户自定义类+静态域静态方法
  6. linux下mtr命令,如何使用Linux mtr命令
  7. C语言 extern “C” - C语言零基础入门教程
  8. mysql锁场景_MySQL死锁系列-常见加锁场景分析
  9. python换源还是不行_浅析Python3 pip换源问题
  10. java jdbc 操作_Java:JDBC操作