内部类的基本使用

目录

一、内部类分类

二、内部类的声明

三、成员内部类

四、局部内部类

五、匿名内部类

六、内部类使用注意事项


一、内部类分类

        成员内部类(static成员内部类和非static成员内部类)

        局部内部类(不谈修饰符)、

        匿名内部类

二、内部类的声明

        class 外部类{

                方法(){

               class 局部内部类{
                        }
                }
               {
                        class 局部内部类{
                        }
                }
        }

三、成员内部类

3.1非static成员内部类

代码举例:

class First {
    private  int a=1;
    public class Second{
        private int b = 2;
        public void f1(){
            System.out.println("我是内部类");
            System.out.println(a);
            System.out.println(b);
        }
    }
    public void f2(){
        System.out.println("我是外部类");
        System.out.println(a);
    }

}
public class Main{
    public static void main(String[] args) {
        First fi = new First();
        First.Second fi2 = new First().new Second();
        fi.f2();
        fi2.f1();
    }
}

3.2static成员内部类

代码举例:

class  Main {
    private  static int a=1;
    public static class Second{
        private int b = 2;
        public void f1(){
            System.out.println("我是内部类");
            System.out.println(a);
            System.out.println(b);
        }
    }
    public void f2(){
        System.out.println("我是外部类");
        System.out.println(a);
    }

}
public class test31{
    public static void main(String[] args) {
        First fi = new First();
        First.Second f2 = new First.Second();
        fi.f2();
        f2.f1();
    }
}

四、局部内部类

代码举例:

class  Main{
    private  int a=1;
    public void f1(){
        class Second{
            private int b = 2;
            public void f3(){
                System.out.println("我是内部类");
                System.out.println(a);
                System.out.println(b);
            }

        }
        Second s = new Second();
        s.f3();
    }
    public void f2(){
        System.out.println("我是外部类");
        System.out.println(a);
    }
}
public class test31{
    public static void main(String[] args) {
        First fi = new First();
        fi.f1();
        fi.f2();
    }
}

五、匿名内部类

匿名内部类实现接口

代码举例:

interface f{
    public abstract void getnum();
}
public class test31{
    public static void main(String[] args) {
        new test31().f1(new f(){
            private int b = 2;

            public void getnum(){

                System.out.println("匿名内部类");
                System.out.println(b);
            }
        });
    }
    public void f1(f a){
        a.getnum();
    }
}

六、内部类使用注意事项

6.1匿名的内部类是没有名字的内部类。不能继承其它类。

6.2静态内部类可以有静态成员,而非静态内部类则不能有静态成员。

6.3局部内部类和局部变量地位类似,不能使用public,protected,缺省,private。

6.4局部内部类不能使用static修饰,也不能包含静态成员。

6.5 局部内部类可以使用外部方法的局部变量,但是必须是final的。

6.6成员内部类可以直接使用外部类的所有成员,包括私有的数据。

6.7当想要在外部类的静态成员部分使用内部类时,可以考虑内部类声明为静态的。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值