博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java内部类学习
阅读量:4223 次
发布时间:2019-05-26

本文共 3023 字,大约阅读时间需要 10 分钟。

前言

由于Java语言不支持多继承,而在实际开发中可能会面临多重继承的场景的,内部类便可派上用场了。

内部类

java内部类分为: 成员内部类、静态内部类、方法内部类、匿名内部类 。

成员内部类

顾名思义,成员内部类作为类的成员,存在于某个类的内部。成员内部类可以调用外部类的所有成员,但只有在创建了外部类的对象后,才能调用外部的成员

public class OutClass01 {    private String name;    private int age;    public OutClass01(String name, int a){        System.out.println("正在初始化外部类");        this.name = name;        this.age = age;    }    public void print(){        System.out.println("外部类中的print方法");        System.out.println("外部类中的name:"+name);        System.out.println("外部类中的age:"+age);    }    class InnerClass01{        public void print(){            System.out.println("内部类中的print方法");            System.out.println("内部类访问外部类中的name:"+name);            System.out.println("内部类访问外部类中的age:"+age);        }    }    public static void main(String[] args) {        OutClass01 out = new OutClass01("Alex", 20);        InnerClass01 in = out.new InnerClass01();        out.print();        in.print();    }}

静态内部类

静态内部类,作为类的静态成员,存在于某个类的内部。静态内部类虽然是外部类的成员,但是在未创建外部类的对象的情况下,可以直接创建静态内部类的对象静态内部类可以引用外部类的静态成员变量和静态方法,但不能引用外部类的普通成员

public class OutClass02 {    private String name;    private int age;    private static String id = "0123456789";    public OutClass02(String name, int a){        System.out.println("正在初始化外部类");        this.name = name;        this.age = age;    }    public void print01(){        System.out.println("外部类中的print方法");        System.out.println("外部类中的name:"+name);        System.out.println("外部类中的age:"+age);    }    public static void print02(){        System.out.println("外部类中的print方法");        System.out.println("外部类中的id:"+id);    }    static class InnerClass02{        public void print(){            System.out.println("内部类中的print方法");            print02();        }    }    public static void main(String[] args) {        InnerClass02 in = new InnerClass02();        in.print();    }}

方法内部类

方法内部类,存在于某个方法的内部,只能在方法内部中使用,一旦方法执行完毕,局部内部类就会从内存中删除。如果局部内部类中要使用他所在方法中的局部变量,那么就需要将这个局部变量定义为final的。

public class OutClass03 {    public void print(){        final int a = 10;        class InnerClass03{            int b = 20;            public void print(){                //使用所在方法中的局部变量,那么就需要将这个局部变量定义为final的。                System.out.println("访问内部类中的成员a:"+a);                System.out.println("访问内部类中的成员b:"+b);            }        }        InnerClass03 in = new InnerClass03();        in.print();    }    public static void main(String[] args) {        OutClass03 out = new OutClass03();        out.print();    }}

匿名内部类

匿名内部类,存在于某个类的内部,但是无类名的类。匿名内部类的定义与对象的创建合并在一起,匿名内部类一般通过如下形式定义,并且在定义的同时进行对象的实例化。

public class OutClass04 {    public void print(InnerClass04 in){        in.show();    }    public static void main(String[] args) {        OutClass04 out = new OutClass04();        out.print(new InnerClass04(){            //内部类主体            public void show(){                System.out.println("在匿名内部类中");            }        });    }}class InnerClass04{    public void show(){        System.out.println("在InnerClass04类中");    }}

总结

本文介绍了Java中的四种匿名类,希望能加深读者对匿名类的理解。

转载地址:http://rsgmi.baihongyu.com/

你可能感兴趣的文章
libgdx: 2D Particle Editor工具使用
查看>>
eclipse 给jar库添加源码
查看>>
C++ 枚举声明 enum 和 enum class
查看>>
Python optionParser模块的使用方法
查看>>
android 消灭星星出错
查看>>
PyCharm 教程(三)Hello world!
查看>>
PyCharm: 显示源码行号
查看>>
cocos2dx使用第三方字库.ttf,需要注意的事项
查看>>
cocos2.X版本lua端使用定时器的方法
查看>>
lua math.fmod使用注意小数问题
查看>>
lua 时间转化
查看>>
lua学习笔记之五(Lua中的数学库)
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第一篇:互联网时代U盘化生存方式 【张振华.Jack】
查看>>
CentOS6.4配置Hadoop-2.6.0集群配置安装指南(经过实战演练)【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第二篇:专注的力量 [张振华.Jack]
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第三篇:我的舍与得的2014[张振华.Jack]
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第五篇:不要给自己找任何借口【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第八篇:坚持的力量 【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第九篇:春节那些事-过年回家不需要理由【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第十一篇:马云乌镇40分钟演讲实录【张振华.Jack】
查看>>