为了账号安全,请及时绑定邮箱和手机立即绑定

Java小试牛刀——内部类

标签:
Java

内部类的重要知识
1.不能直接在主方法里调用内部类的方法或者属性

class Outer{
    private int a=1;
    class Inner{
        public void Info(){
            System.out.println(a);
        }
    }
}
class ListSetMap {
    public static void main(String[] args) {
        new Outer.Inner().Info();        //这样编译不通过的
    }
}

会报错
---------- 编译javac ----------

ListSetMap.java:12: 错误: 需要包含Outer.Inner的封闭实例
new Outer.Inner().Info();         //这样是错误的写法
^
1 个错误

不是静态类,因此不能使用“外部类.内部类”的形式。
所以只能通过调用外部类的来调用内部类的方法

class Outer{
    private int a=1;
    class Inner{
        private int b=0;   //定义b
        public void Info(){
            System.out.println(a);
        }
    }
    public void fun()
        new Inner().Info();      //生成Inner对象调用方法
        System.out.println(new Inner().b);    //继续访问private int b
    }
}
class ListSetMap {
    public static void main(String[] args) {
        new Outer().fun();     //调用外部类的方法调用内部类
    }
}

使用static来声明内部类(即可直接调用)-->解决上面的办法

class Outer{
    private static int a=1;
    static class Inner{
        public void Info(){
            System.out.println(a);
        }
    }
}
class ListSetMap {
    public static void main(String[] args) {
        new Outer.Inner().Info();         
    }
}
输出    1
在外部访问内部类
对于上面的static方法来访问内部类,那还有下面这种方法来调用内部类的方法或者属性
class Outer{
    private int a=1;     //封装变量   
    class Inner{    
        public void Info(){
            System.out.println(a);
        }
    }
}
class ListSetMap {
    public static void main(String[] args) {
        Outer out=new Outer();     //实例化外部类对象
        Outer.Inner in=out.new Inner();  //实例化内部类对象
        in.Info();   //调用内部类的方法
    }
}

输出 1
还能在方法中定义内部类

class Outer{
    private int a=1;
    public void fun(){      //此处若有参数 必须使用final定义
        class Inner{
        public void Info(){
            System.out.println(a);      
                                }
                        }
         new Inner().Info();     //实例化内部对象 
  }
}
class ListSetMap {
    public static void main(String[] args) {
        new Outer().fun();
    }
}

输出 1

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消