内部类主要有三种:静态内部类,实例内部类,局部变量内部类

1.静态内部类,该类被static修饰,并且是成员变量,它只能访问外部类被static修饰的方法以及字段(这种说法只局限于不再内部类中创建外部类的对象)

public class Outer{

  public  String name;

  /**静态内部类
  * 只能访问外部类静态的字段
  * 可以有静态和非静态的方法以及字段
  * */
       public static class StaticClass{
          public void test(String name){
               System.out.println("呵呵呵呵"+name);
         }
   public String aaaString="aaaa";
     public static void show(){
           System.out.println("show");
         }
       }

//得到其内部类对象的方法

public static void main(String[] args) {      

//静态内部类
          Outer.StaticClass staticClass = new Outer.StaticClass();
  //静态内部类 静态方法调用
    Outer.StaticClass.show();

}

}

2.实例内部类,没有被static修饰,是外部类的成员变量,该内部类不能有static的字段和方法,否则就要将其声明为static的,该内部类中可以直接访问外部类所有的字段和方法,因为内部类持有外部类.this对象。test方法中name指的是方法的变量,而Outer.this.name 指的外部类的name字段

public class Outer{

public  String name;

    /** 实例内部类声明在成员变量上
    * 不能有静态方法或者字段
    * */
    public class InnerClass1{
      public String a ="asdf";
      public void test(String name){
      //Outer.this.name 代表的是外部的类
      Outer.this.name = name;
    }
    public void get(){
      System.out.println(Outer.this.name);
    }

  //得到其内部类对象的方法

public static void main(String[] args) {      

    //实例内部类
    Outer.InnerClass1 innerClass1 = new Outer().new InnerClass1();

}

}

}

3.局部变量内部类,有一点需要注意,该内部类访问局部变量时,该局部变量需要加上final 修饰,该内部类不能使用staic修饰,故该内部类不允许有静态的方法或者字段,该内部类,内部也持有外部类.this对象,可以访问外部类的所有方法和字段

public class Outer{

  public  String name;

  public void test(String address){

    /**内部类声明在局部变量上
    * 类不能使用static修饰
    * 字段不能被static修饰
    * */
    class InnerClass2{
      private String name;
      public int age;
      public void test(String name){
      Outer.this.name = name;
    }
  }
    InnerClass2 innerClass2 = new InnerClass2();
  }

}

java内部类demo的更多相关文章

  1. js闭包vs Java内部类

    前言: 昨天写了一个关于Java内部的博客,在内部类的最后一点中谈到了Java闭包的概念,他是这样定义闭包的:闭包是一个可调用的对象,它记录了一些信息,这些信息来自创建它的作用域.结合Java的内部类 ...

  2. Java 内部类.md

    Java 内部类 学习自 <Java编程思想> Overview 什么是内部类? Thinking In Java 中如此定义: 将一个类的定义放在里另一个类的定义的内部,这就是内部类. ...

  3. Java内部类使用注意事项

    Java内部类使用注意事项: 1. 非静态内部类成员可以访问外部类实例成员 (如注释1),但外部类访问非静态内部类的成员 必须创建非静态内部类对象来访问其成员,如注释2 public class La ...

  4. 死磕Java内部类

    Java内部类,相信大家都用过,但是多数同学可能对它了解的并不深入,只是靠记忆来完成日常工作,却不能融会贯通,遇到奇葩问题更是难以有思路去解决.这篇文章带大家一起死磕Java内部类的方方面面. 友情提 ...

  5. 简单谈一谈Java内部类的使用原因

    使用内部类的原因 学习总得知其所以然,前面的一篇文章中我有提到过关于java内部类的几种用法以及一些示例,但是不明白内部类具体可以做什么,显然学习起来很渺茫,今天的文章简单说一说使用内部类的几个原因, ...

  6. Java内部类的整理。

    Java 内部类 分四种:成员内部类.局部内部类.静态内部类和匿名内部类. 成员内部类: (1)即作为外部类的一个成员存在,与外部类的属性.方法并列. 注意:成员内部类中不能定义静态变量,但可以访问外 ...

  7. Java内部类final语义实现

    本文描述在java内部类中,经常会引用外部类的变量信息.但是这些变量信息是如何传递给内部类的,在表面上并没有相应的线索.本文从字节码层描述在内部类中是如何实现这些语义的. 本地临时变量 基本类型 fi ...

  8. Java内部类详解

    Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...

  9. 黑马----JAVA内部类

    黑马程序员:Java培训.Android培训.iOS培训..Net培训 黑马程序员--JAVA内部类 一.内部类分为显式内部类和匿名内部类. 二.显式内部类 1.即显式声明的内部类,它有类名. 2.显 ...

随机推荐

  1. 团队作业八——第二次团队冲刺(Beta版本)第6天

    团队作业八--第二次团队冲刺(Beta版本)第6天 一.每个人的工作 (1) 昨天已完成的工作 简单模式逻辑代码涉及与相关功能的具体实现 (2) 今天计划完成的工作 修改完善注册登录内容界面,编辑错题 ...

  2. Swing-JRadioButton用法-入门

    JRadioButton是Swing中的单选框.所谓单选框是指,在同一个组内虽然有多个单选框存在,然而同一时刻只能有一个单选框处于选中状态.它就像收音机的按钮,按下一个时此前被按下的会自动弹起,故因此 ...

  3. php环境和apache服务启动不的解决方法

    安装服务器,可能需要设置apache的端口号,用记事本打开httpd.conf  ctrl+F搜索80,在中间添加数字8 08 0,不解释 在sql中配置好了服务器 服务器安装路径中的WWW文件作为服 ...

  4. 在Ubuntu中部署并测试Fabric 1.0 Beta

    [更新:1.0Beta已经是过去式了,现在出了1.0.0的正式版,请大家参照 http://www.cnblogs.com/studyzy/p/7437157.html  安装Fabric 1.0.0 ...

  5. Server Tomcat v7.0 Server at localhost failed to start.解决方法

    ---恢复内容开始--- 今天在做jsp项目的时候,Tomcat突然无法打开了,出现的报错是这样的: 也不知道是怎么搞得,百度了老半天看到有的网友是通过两这个方法解决的,连接在这http://blog ...

  6. java如何将html过滤为纯文本

    java开发中jsp页面可以嵌套很多插件就可以将html形式的文本直接转化为纯文本,但是如果你已经保存下来或者没有运用插件,这个额html形式的文本你该怎么转化为纯文本呢?有次我将公告保存了html形 ...

  7. 全栈工程师带你开发 ,node开发人脸识别门禁系统

    效果图:       知识点: 人脸识别SKD部署,  webRTC视频流处理,URL构建blob对象,Canvas映射截图,ajax数据交互,Node图像处理,跨域与413处理,base64解码,p ...

  8. YYHS-NOIP2017Training0921-逆光

    题目描述 有一束光/那瞬间/是什么痛得刺眼/你的视线是谅解/为什么舍不得熄灭/我逆着光却看见/那是泪光/那力量/我不想再去抵挡/面对希望/逆着光/感觉爱存在的地方/一直就在我身旁 Descriptio ...

  9. Finally-操作返回值

    Finally中操作返回会出现一个问题?直接看代码 static int M1() { ; try { result = result + ; //======引发异常的代码========== , ...

  10. 基于React Native的移动平台研发实践分享

    转载:http://blog.csdn.net/haozhenming/article/details/72772787 本文目录: 一.React Native 已经成为了移动前端技术的趋势 二.基 ...