• java===内部类与匿名内部类


    package cn.china;
    class body{
         String name="hand";
        class head{
            String nString="foot";
            void show(){
                System.out.println(name+this.nString);
            }
        }
        public void accept(){
            head h=new head();
            h.show();
        }
    }
    public class Demo1 {
    
        public static void main(String[] args) {
            new body().accept();
            body.head in=new body().new head();
            in.show();
            // TODO Auto-generated method stub
    
        }
    
    }
    package cn.china;
    /**内部类的修饰符
     * private 私有
     * static 修饰的内部类 实例化格式outer.inner in=new outer.inner();outer直接调用静态类,然后
     * new内部类的对象就可以了;如果内部类是静态的,里面成员也是静态的,就可以直接“外部类名.内部类名.方法名”调用
     * 还需要注意,内部类中如果有静态成员,这个内部类必须是静态的*/
    class outer{
        static int num=5;
        static class inner{
            void show1(){
                System.out.println("inner   run1"+num);
            }
            static void show2(){
                System.out.println("inner   run2"+num);
            }
        }
    }
    public class Demo2 {
    
        public static void main(String[] args) {
            outer.inner in=new outer.inner();
            in.show1();
            outer.inner.show2();
            // TODO Auto-generated method stub
    
        }
    
    }
    package cn.china;
    abstract class 水果{
        abstract void eat();
    }
    class Person{
        void method(){
        new 水果()//实际上这就是一个子类对象
        {
            void eat()
            {
                System.out.println("人吃西红柿");
            }
            void play(){//需要注意如果要调用这个方法,需要注意用子类对象调用,如果向上转型父类中没有此方法编译会失败
                System.out.println("haha");
            }
        }.play();
        }
    }
    
    
    public class Demo3 {
    
        public static void main(String[] args) {
            new Person().method();
            // TODO Auto-generated method stub
    
        }
    
    }
    package cn.china;
    class outer4{
        int num=4;
        void method(){
            final int x=9; //局部内部类访问局部变量,这个局部变量必须是常量,要用final修饰
            class inner{
                void show(){
                    System.out.println("show   run"+num);
                }
                void function(){
                    System.out.println("function   run"+x);
                }
            }
            inner in=new inner();
            in.function();
            in.show();
        }
    }
    public class Demo4 {
    
        public static void main(String[] args) {
            outer4 o=new outer4();
            o.method();
            // TODO Auto-generated method stub
    
        }
    
    }
    package cn.china;
    
    
    
    interface A{
        void show1();
        void show2();
    }
    class outer5{
        void method(){
        A a=new A(){//向上转型
            public void show1(){System.out.println("show1  run");}
            public void show2(){System.out.println("show2  run");}
        };//注意分号结尾
        a.show1();
        a.show2();
        }
    }
    public class Demo5 {
    
        public static void main(String[] args) {
            new outer5().method();
            // TODO Auto-generated method stub
            function(new A()//这种使用方法,只能是接口内方法不能超过3个,不然影响易读性
            {
                public void show1(){System.out.println("show1   run");}
                public void show2(){System.out.println("show2   run");}
            });
    
        }
        /**关于匿名内部类的应用之一*/
        public static void function(A a){
            a.show1();
            a.show2();
        }
    
    }
  • 相关阅读:
    linux学习笔记2-命令总结2
    Hbase项目(完整版)
    hbase的优化(全)
    hbase读写流程
    Hbase出现ERROR: Can't get master address from ZooKeeper; znode data == null解决办法
    hbase的命令
    快照原理
    xshell同时发送多条命令
    配置NTP集群时间同步(二)
    配置 NTP 时间服务器
  • 原文地址:https://www.cnblogs.com/wangyinxu/p/6565353.html
Copyright © 2020-2023  润新知