栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

成员内部类和局部内部类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

成员内部类和局部内部类

内部类:把类定义在其他类的内部 ,我们称为内部类。

内部类的特点:内部类可以访问外部类的成员,包括私有

                        外部类想要访问内部类的成员,必须创建内部类的对象

按照内部类在类中定义的位置不同,可以分为两种格式:成员内部类和局部内部类

创建成员内部类对象的格式:

外部类名.成员内部类名 对象名 = new 外部类名().new 内部类名();

class Outer3{
    private int num=10;
    class Inner{
        public void show(){
            System.out.println(num);
        }
    }
}
public class InnerClassDemo3 {
    public static void main(String[] args) {
        //外部类名.成员内部类名 对象名 = new 外部类名().new 成员内部类名();
        Outer3.Inner inner=new Outer3().new Inner();
        inner.show();
    }
}

成员内部常见的修饰符:

private: 其他类不能直接创建内部类的对象,要想使用被private修饰内部类成员,必须在本类中间接的创建对象调用

static: 内部类如果是被satic修饰的时候,只能访问外部类中静态成员

//private: 其他类不能直接创建内部类的对象,要想使用被private修饰内部类成员,必须在本类中间接的创建对象调用
class Outer3{
    private int num=100;
    private class Inner{
        public void show(){
            System.out.println(num);
        }
    }
    public void fun(){
        //创建对象
        Inner inner = new Inner();
        inner.show();
    }
}
public class InnerClassDemo3 {
    public static void main(String[] args) {
        Outer3 outer = new Outer3();
        outer.fun();
    }
}

//static: 内部类如果是被satic修饰的时候,只能访问外部类中静态成员
class Outer3{
    private static int num=100;
    static class Inner{
        public void show(){
            System.out.println(num);
        }
    }
}
public class InnerClassDemo3 {
    public static void main(String[] args) {
        //当内部类是被静态所修饰的时候,出现了另外一种创建内部类的方式
        //格式如下:
        //外部类名.内部类名 对象名 = new 外部类名.内部类名();
        Outer3.Inner inner=new Outer3.Inner();
        inner.show();

    }
}



局部内部类:

1、定义在方法中的类

2、局部内部类可以直接方法外部类中所有成员

3、要想使用局部内部类中的方法,在定义局部内部类的成员方法中,创建局部内部类对象调用方法

class Outer4{
    private int num1=10;
    public void show(){
        //在局部内部类中引用的本地的变量必须是最终变量或者实际上的最终变量
        //局部内部类的方法中定义的局部变量自动加上了final关键字
        //在JDK1.8之后会自动加上final关键字
        // final int num2=20;
        int num2=20;
        class Inner{
            int num3=30;
            public void fun(){
                System.out.println(num1);
                System.out.println(num2);
                System.out.println(num3);
            }
        }
        Inner inner = new Inner();
        inner.fun();
    }
}
public class InnerClassDemo4 {
    public static void main(String[] args) {
        Outer4 outer4 = new Outer4();
        outer4.show();
    }
}
运行结果:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709267.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号