Java基础笔记 – 内部类 静态内部类 成员内部类 局部内部类 匿名内部类
本文由发表于6年前 | Java基础 | Java基础笔记 – 内部类 静态内部类 成员内部类 局部内部类 匿名内部类已关闭评论 |  被围观 7,474 views+
内部类:
内部类分为四种:
1、静态内部类(static inner classes)1.1、相关使用例子:2、成员内部类(member inner classes):2.1、相关使用例子:3、局部内部类(local inner classes):3.1、相关使用例子:4、匿名内部类(anonymous inner classes):4.1、相关使用例子:
内部类:

使用内部类减少了命名冲突。

一个内部类可以定义在一个类中,一个方法中甚至一个表达式中。

内部类分为四种:
静态内部类(static inner classes)
成员内部类(member inner classes)
局部内部类(local inner classes)
匿名内部类(anonymous inner classes)
1、静态内部类(static inner classes)

最简单的内部类。

只能访问外部类的静态成员变量与静态方法。

生成静态内部类对象的方法:

OuterClass.InnerClass inner = new OuterClass.InnerClass();
1.1、相关使用例子:

静态内部类:

class StaticInner{
    private static int a = 1;

    /**
   * 静态内部类
   * 生成的类名:StaticInner$InnerClass
   */
    public static class InnerClass{
        //静态内部类可以声明静态的成员变量,其他的内部类不可以
        private static int b = 1;
        public void execute(){
            //静态内部类只能访问静态程序
            System.out.println(a + b);
        }
    }
}

main方法中使用:

public static void main(String[] args) {
    //创建静态内部类
    StaticInner.InnerClass innerClass = new StaticInner.InnerClass();
    innerClass.execute();
}
2、成员内部类(member inner classes):

成员内部类可以访问外部类的静态与非静态的方法和成员变量。

生成成员内部类对象的方法:

OuterClass.InnerClass inner = new OuterClass().new InnerClass();

在局部内部类中访问外部类的成员变量的方法:

OuterClass.this.a;
2.1、相关使用例子:

成员内部类:

class MemberInner{
    private int a = 1;

    public void execute(){
        //在外部类中创建成员内部类
        InnerClass innerClass = this.new InnerClass();
    }

    /**
 * 成员内部类
 */
    public class InnerClass{

        //内部类可以创建与外部类同名的成员变量
        private int a = 2;

        public void execute(){
            //this引用的是内部类
            System.out.println(this.a);
            //在内部了中使用外部类的成员变量的方法
            System.out.println(MemberInner.this.a);
        }
    }
}

在main方法中使用:

public static void main(String[] args) {
    //创建成员内部类
    MemberInner.InnerClass innerClass = new MemberInner().new InnerClass();
    innerClass.execute();
}
3、局部内部类(local inner classes):

类似于局部变量,不能定义为public,protected,private或者static类型。

定义方法中,只能方法中声明为final类型的变量。

3.1、相关使用例子:

局部内部类:

class LocalInner{

    public void execute(){
        final int a = 1;
        /**
 * 创建局部内部类
 */
        class InnerClass{
            public void execute(){
                System.out.println("LocalInner Class");

                //局部内部类只能访问final类型的变量
                System.out.println(a);
            }
        }
        //只能在所在方法区域创建
        new InnerClass().execute();
    }
}

在main方法中使用:

public static void main(String[] args) {
    //外部不能直接创建局部内部类
    LocalInner localInner = new LocalInner();
    localInner.execute();
}
4、匿名内部类(anonymous inner classes):

匿名内部类没有类名,没有class关键字也没有extends和implements等关键字修饰。

匿名内部类会隐式地继承一个父类或实现一个接口。

4.1、相关使用例子:
public static void main(String[] args) {
    AnonymousInnerClassTest test = new AnonymousInnerClassTest();

    /**
 * 创建匿名内部类
 * 生成的类名:AnonymousInnerClassTest$1
 */
    test.print(new Date(){
        //重写toString()方法
        @Override
        public String toString() {
            return "Hello world.";
        }
    });

    JButton button = new JButton();

    /**
 * 创建匿名内部类
 * 该匿名内部类实现ActionListener接口
 * 生成的类名:AnonymousInnerClassTest$1
 */
    button.addActionListener(new ActionListener(){
        //实现接口中的方法
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("使用匿名内部类实现ActionListener接口");
        }
    });
}

public void print(Date date){
    System.out.println(date);
}
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/java-based-notebook-a-static-inner-class-within-a-class-member-within-the-class-of-local-inner-classes-anonymous-inner-classes.html
关键字: ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 11/3
文章评论
    没有评论

抱歉!评论已关闭.

给我留言

有人回复时邮件通知我
Java基础的相关文章
随机文章 本月热门 热评
1 Linux下find,sed,tr,grep,cut,wc等常用命令的使用和相关实例解析 2011/6/10
2 Python语法笔记2 2014/3/9
3 Java源码分析 – 策略模式在Java集合框架实现代码中的体现 2011/10/17
4 Java Web笔记 – Servlet多线程同步问题及其解决方法 2011/11/10
5 使用WP-PostViews插件统计不了浏览量的问题 2012/4/9
6 软件工程学概述-软件工程 软件危机 软件过程 2011/7/1
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.