Java内部类使用注意事项:

1. 非静态内部类成员可以访问外部类实例成员 (如注释1),但外部类访问非静态内部类的成员 必须创建非静态内部类对象来访问其成员,如注释2

public class Lab02 {

private int ss=5;

private class InnerClass{

private int demo=4;

private void test() {

//注释1:非静态内部类可以直接访问外部类变量

System.out.println("外部类成员变量ss的值-->"+ss);

}

}

private void test02() {

InnerClass cal=new InnerClass();

cal.test(); //注释2:

System.out.println("内部类变量demo的值:"+cal.demo);

}

public static void main(String[] args) {

Lab02 cal=new Lab02();

cal.test02();

}

}

2. 静态内部类不能访问外部类的实例成员,如:代码一

外部类不能直接访问静态内部类成员,但可以使用静态内部类的类名来调用内部类成员或使用静态内部类对象来调用内部类实例成员,如:代码二。

代码一:

public class Test{

private int pro1=5;

private static int pro2=9;

static InnerClass{

public void demo(){

System.ou.printIn("pro1"); //错误

System.ou.printIn("pro2");//正确

}

}

}

代码二:

public class Test{

static InnerClass{

private int pro1=5;

private static int pro2=9;

}

public void demo{

System.out.printIn("InnerClass.pro1");

System.out.printIn("new InnerClass().pro2");

}

}

3. 如果外部类成员变量、内部类成员变量与内部类方法里的局部变量同名,则可以通过使用this、外部类名.this作为限定来区分

public class Lab {

private int ss = 3;

private class InnerClass {

private int ss = 2;

private void info() {

int ss = 1;

System.out.println("外部类成员变量的值-->" + Lab.this.ss);

System.out.println("内部类成员变量-->" + this.ss);

System.out.println("局部变量的值-->" + ss);

}

}

private void test() {

new InnerClass().info();

}

public static void main(String[] args) {

new Lab().test();

}

}

4. Java接口里定义的内部类默认使用public static修饰 ,且只能指定public作为访问控制符

非静态内部类里不能有静态属性

标签:InnerClass,Java,内部,int,System,private,ss,注意事项,public

来源: https://www.cnblogs.com/ccbTony/p/11393690.html

java内部类可以使用public_Java内部类使用注意事项相关推荐

  1. 第四周 Java语法总结_内部类_常用类_getclass_toStrong_equals_clone_Scanner_String_StringBuffer_Integer_集合_插入排序

    文章目录 20.内部类 1.格式 2.外部类访问内部类 3.局部内部类 4.匿名内部类 1)方法的形式参数是接口 2)关于匿名内部类在开发中的使用 3)方法的返回值是接口或抽象类型 16.常用类 1. ...

  2. java 内部类 返回值_Java基础第10天+形式参数和返回值的问题、包、导包、权限修饰符、常见的修饰符、内部类(局部内部类,成员内部类,匿名内部类)...

    1:形式参数和返回值的问题(理解) (1)形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 (2)返回值类型: 类名:返回的是该类的对象 抽象类名:返回的 ...

  3. Java的知识点14——内部类的概念、内部类的分类

    内部类的概念 一般情况,我们把类定义成独立的单元.有些情况下,我们把一个类放在另一个类的内部定义,称为内部类(innerclasses). 内部类可以使用public.default.protecte ...

  4. 【Java】6.7 内部类

    目录 非静态内部类 静态内部类 使用内部类 局部内部类 匿名内部类 [内部类是什么?] 内部类 -- 就是把一个类放在类里面定义 内部类 - 寄生类 外部类 - 宿主类 内部类,由于踏上一级程序单元是 ...

  5. Java基础篇:内部类详解

    目录: 一.内部类的好处: 二.成员内部类: 三.局部内部类: 四.静态内部类: 五.匿名内部类: 六.总结: 内部类:可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个编译时概念 ...

  6. java 内部类_java的内部类和静态内部类(嵌套类)

    背景 开发新项目,写Swager的mode的时候用到了嵌套Model,于是在代码中,出现了静态内部类.在codeReview的时候稍微和大家聊了一下.尤其是Static 修饰类和修饰对象和变量不一样呢 ...

  7. Java 内部类、局部内部类、静态内部类使用

    1.上代码: //局部内部类.静态内部类.匿名类接口仅仅解决了多继承的部分问题,内部类有效实现了多重继承package ClassN1;public final class InnerClass {p ...

  8. Java 基础巩固:内部类的字节码学习和实战使用场景

    文章出自:安卓进阶学习指南 主要贡献者: Cloud9527 Alex_赵 Struggle shixinzhang 读完本文你将了解: 背景介绍 四种内部类介绍 成员内部类 静态内部类 局部内部类 ...

  9. JAVA学习笔记:java的高级特性(内部类)

    内部类 内部类(类里嵌套类)Inner Class public class A{class B{}} 内部类不是在一个java源文件中编写俩个平行的俩个类,而是在一个类的内部再定义另外一个类.我们可 ...

最新文章

  1. Java项目:潜艇大战项目(java+swing)
  2. (转)线程安全的CopyOnWriteArrayList介绍
  3. Linux shell脚本中单双引号的区别
  4. 在组策略中使用脚本为域用户添加网络打印机
  5. 基于matlab的pcb焊盘,EDA复习题
  6. python的应用领域和常用函数模块有哪些_Python模块导入区别与常用函数案例
  7. Flutter视频播放、Flutter VideoPlayer 视频播放组件精要
  8. JS各种各样的拖动效果
  9. cas server + cas client 单点登录 原理介绍
  10. vue: 从组件通讯到vuex (上)
  11. Scala的模式匹配和条件类
  12. 什么是数据结构?对数据结构的理解
  13. 重点分析!转型中的好莱坞发生了哪些变局?
  14. 这是一个伟大的时代……世界背后的秘密是什么?
  15. html5方框的箭头怎么弄,纯CSS-带箭头的DIV方框
  16. 移动通信网络规划:机房设计
  17. 计算机寻址的最低单元,80c51单片机指令系统的7种寻址方式
  18. c语言 周期性矩形脉冲,【转载】微分电路和积分电路
  19. Python小练习—— 如何统计序列中元素的频度
  20. 自用版:客服话术大全

热门文章

  1. 求最大公约数与最小公倍数的方法
  2. 12. Game on Tree 3
  3. Unity2018版本报错问题解决方法
  4. 计算平均成绩(PTA)
  5. 关乎你我, 这个很重要! 浅谈Java工程师的职业规划
  6. 关于 onblur 和 onchange 的区别
  7. 基于径向基函数(RBF)的函数插值
  8. Python代码检查没有问题,PyCharm中报错 invalid character in identifier,中文双引号
  9. 死磕cglib系列之一 cglib简介与callback解析
  10. 阿里国际站RTS产品限时整改超时自动下架怎么处理?