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

内部类与匿名对象

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

内部类与匿名对象

Java类的组成

public class Demo03 {
    public static void main(String[] args) {
        //类的组成:属性、方法、构造器、代码块(静态块、构造块、普通块、同步块)、内部类(静态内部类、非静态内部类)
    }

    static {
        System.out.println("静态块");
    }

    {
        System.out.println("构造块");
    }

    public void add() {
        {
            System.out.println("普通块");
        }
    }
}

内部类

//内部类:成员内部类、
class OutClass {
    String s = "外部类";

    //成员内部类(定义在类中方法外) 局部内部类(定义在方法中)
    class InnerClass1 {
        String s="内部类";
        public void echo1() {
            System.out.println("成员内部类");
            //内部类访问外部类重名属性或方法
            String s = OutClass.this.s;
            System.out.println(s);
        }
    }

    //静态成员内部类
    static class InnerClass2 {
        public void echo2() {
            System.out.println("静态成员内部类");
            //静态成员内部类不能直接访问外部类的属性或方法
            OutClass o = new OutClass();
        }
    }

    //局部内部类
    public void echo3() {
        class InnerClass3 {
            public void echo() {
                //内部类不能声明静态方法
                System.out.println("局部内部类");
            }
        }
    }

    public void method() {
        //外部类访问内部类需要创建内部类的实例
        InnerClass2 c2 = new InnerClass2();
        c2.echo2();
        InnerClass1 c1 = new InnerClass1();
        c1.echo1();
    }

    public static void main(String[] args) {
        OutClass o=new OutClass();
        o.method();
    }
}

成员内部类的实例化

class Test{
    public static void main(String[] args) {
        //成员内部类的实例化
        //1.静态内部类
        OutClass.InnerClass2 c2=new OutClass.InnerClass2();
        //2.非静态成员内部类
//        OutClass.InnerClass1 c1=new OutClass.InnerClass1();实例化失败
        OutClass o=new OutClass();
        OutClass.InnerClass1 c1=o.new InnerClass1();
    }
}

局部内部类与匿名对象

public class Demo04 {
    int length=10;
    public void method1(){
        int length=10;
        class InnerClass implements SimpleSelector {
            public int getLength(){
//                length=12;修改变量失败
//                return length; 局部内部类不能修改局部变量,该变量默认被final修饰
                return 0;
            }
            @Override
            public short getSelectorType() {
                return 0;
            }
            public SimpleSelector share(){
                //返回匿名对象
                return new SimpleSelector() {
                    @Override
                    public short getSelectorType() {
                        return 0;
                    }
                };
            }
            public SimpleSelector getNewOjb(){
                SimpleSelector s=new SimpleSelector() {
                    @Override
                    public short getSelectorType() {
                        return 0;
                    }
                };
                return s;
            }
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/314885.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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