局部内部类和成员内部类

什么是内部类

将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。

内部类的种类?

  • 成员内部类
  • 局部内部类

成员内部类 :

定义在类中方法外的类

定义格式:

注意事项:

  • 内部类可以直接访问外部类的成员,包括私有成员。
  • 外部类要访问内部类的成员,有2种方式:

方式一:外部类方法中,创建内部类对象,间接访问内部类成员

方式二:创建内部类的对象 格式为:

内部类重名访问:

  • 在内部类中要访问,本类的局部变量 直接写变量名
  • 在内部类中要访问,本类的成员变量格式:this.变量名
  • 在内部类中要访问,外部类成员变量格式:外部类名称.this.外部类成员变量名

代码举例:

public class Body { //外部类
    class heart { //成员内部类
        String name = "王五";

        public void methodheart() {//内部类方法
            String name = "李四";
            System.out.println("我是成员内部类成员方法");
            //访问内部类局部变量
            System.out.println(name);//李四
            //访问内部类成员变量
            System.out.println(this.name);// 王五
            //访问外部类成员变量
            System.out.println(Body.this.name);//张三

        }
    }

    private String name = "张三";

    public void methodBody() {
        System.out.println("我是外部类成员方法");
        // 使用内部类方式一 ,在外部类方法中创建内部类对象,使用内部类成员
        new heart().methodheart();
    }

}

测试代码

public class Demo01InnerClass {
    public static void main(String[] args) {
        // 创建外部类对象,调用外部类方法,间接使用内部类成员
        Body body = new Body();
        body.methodBody();
        //==============================================================
        //方式2 直接调用.创建内部类对象
        Body.heart b = new Body().new heart();//
        // 内部类对象,使用成员
        b.methodheart();
    }
}

局部内部类

一个类定义在一个方法内部,那么这就是一个局部内部类。

“局部”:只有当前所属的方法才能使用,出了方法就不能使用了

定义格式:

修饰符  class  外部类名称{

修饰符  返回值类型  外部类方法名称(参数列表){

class  局部内部类名称{

//...

}

}

}

使用:

在外部类方法里创建,内部类对象。在调用内部类成员

代码举例:

package demo02;

public class Outer {

    public void methodOuter(){
        class  Inner{
            int age = 18;
            public  void  InnerMethod(){
                System.out.println("我是局部内部类方法");
            }

        }
        // 创建内部类对象
        Inner inner = new Inner();
        //输出局部内部类的成员变量
        System.out.println(inner.age);
        //调用局部内部类的方法
        inner.InnerMethod();

    }
}

测试代码

package demo02;

public class Test {
    public static void main(String[] args) {
        // 创建外部类对象
        Outer o = new Outer();
        //调用外部类方法,间接访问内部类属性
        o.methodOuter();
    }
}

总结:

  • 外部类的权限修饰符 要么不写 要么就是public
  • 成员内部类的权限修饰符可以是四种修饰符中的一种
  • 局部内部类 不能写修饰符
  • 局部内部类,如果希望访问所在方法的局部变量,那么这个局部变量必须是常量,原因是类和方法的生命周期不一样。常量可以copy进入常量池使用。

原文地址:https://www.cnblogs.com/wurengen/p/10743755.html

时间: 2024-10-15 02:13:06

局部内部类和成员内部类的相关文章

Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)

Java中的内部类(成员内部类.静态内部类.局部内部类.匿名内部类) 神话丿小王子的博客主页 我们先看这样一段话:人是由大脑.肢体.器官等身体结果组成.而组成我们人体的心脏它也有自己的属性和行为(血液.跳动),显然,此处不能单方面用属性或者方法表示一个心脏了,而需要一个类,但是这个类要依赖于人这个类存在(因为心脏不能脱离人体而存活,当然不考虑现今社会的发达科技,只从正常情况下来说),所心脏以需要写在人类的内部.内部类就相当于其中的某个器官之一. 首先看看什么是内部类:在类的内部定义另一个类.没错

Java学习(十六)、成员内部类,静态内部类,匿名内部类,局部内部类

定义:将一个类定义在另一个类的内部.内部的类称为内部类; public class Outer{ class inner{ //省略 } } 特点: ①   内部类可以很好的实现隐藏,可以使用protected,private修饰符; ②   内部类可以直接访问外部类的所有成员,包括私有成员; ③   外部类不能直接访问内部类的成员,必须首先要建立内部类的对象才能访问; ④   内部类可以解决一些问题,比如间接的去实现多继承.可以避免修改接口而实现同一个类中两种同名方法的调用; 成员内部类及应用

Java内部类详解--成员内部类,局部内部类,匿名内部类,静态内部类

说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就来一探究竟.下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 若有不正之处,请多谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/p/3811445.html 一

Java:内部类(静态内部类、成员内部类、局部内部类、匿名内部类)

Java基础_内部类:在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类. 内部类的主要作用:使用内部类可以减少命名冲突. 定义位置:一个内部类可以定义在一个类中,也可以在一个方法中,甚至在一个表达式中. 广义上讲,内部类分为四种: 静态内部类(static inner classes) 成员内部类(member inner classes) 局部内部类(local inner classes) 匿名内部类(anonymous inner classes) 1.静态

内部类(成员内部类、局部内部类(包括匿名内部类))

一个事物的内部包含赢一个事物.一个类里面包含另一个类,这个类叫内部类,包含它的叫它外部类. 例如:身体和心脏的关系:汽车和引擎的关系. 心脏.引擎只有在身体和汽车中才有用.内部类也一样. 分类: 1.成员内部类: 2.局部内部类(包括匿名内部类): 1.成员内部类 /* 修饰符 class 外部类名称{ 修饰符 class 内部类名称{ ...... } ...... } */public class Outer { private String name; public class Inter

Java内部类:局部内部类(三)

Java内部类分为4个部分进行阐述,分别为概览.成员内部类.局部内部类和匿名内部类. 在本文中是Java内部类的局部内部类,主要讲局部内部类的概念和在使用局部内部的过程中,需要注意的一个细节. 1.局部内部类的概念 在一个类的方法内部定义另外一个类,那么另外一个类就称作为局部内部类. class OutterClass { void test() { class InnerClass//局部内部类 { } } } 在上述代码中,InnerClass定义在OutterClass的test方法的内部

局部内部类详解

什么是局部内部类? 定义在方法中的内部类. 注意: 1.内部类不能被public.private.static修饰: 2.在外部类中不能创建内部类的实例: 3.创建内部类的实例只能在包含他的方法中: 4.内部类访问包含他的方法中的变量必须有final修饰: 5.外部类不能访问局部内部类,只能在方法体中访问局部内部类,且访问必须在内部类定义之后. 代码: public class Outer { private String s1 = "this is s1 in Outer"; pri

Java内部类:成员内部类(二)

Java内部类分为4个部分进行阐述,分别为概览.成员内部类.局部内部类和匿名内部类. 在本文中是Java内部类的成员内部类,主要讲述成员内部类的访问方式和一些细节. 成员内部类 成员内部类的访问方式 非static成员内部类 static成员内部类 外部类提供一个方法创建内部类的对象 直接创建内部类的对象 成员内部类要注意的细节 1.成员内部类的访问方式 成员内部类的访问方式,也可以理解为它的创建方式,主要分为两种:第一种是由外部类提供一个方法,用来创建内部类的对象,第二种方法直接创建内部类的对

java内部类之成员内部类、静态内部类

内部类其实就是一个类中还包含着另外一个类 如同一个人是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液.跳动)显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类,而心脏又在人体当中,正如同是内部类在外部内当中 广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类.下面就先来了解一下这四种内部类的用法. 一.成员内部类:成员内部类是最普通的内部类,它的定义为位于另一个类的内部,成员内部类可以无条件访