zoukankan      html  css  js  c++  java
  • 9.内部类

    内部类分为静态和非静态两种,区分的标识为static
    1.定义和概念
    1.1非静态内部类

    内部类的可以访问外部类的的成员,但是外部类如果要访问内部类

    1.2静态内部类

    二者关系:

    2.使用内部类:

    //Out
    public class Out {
        //In
        public class In {
            public In(String msg){
                System.out.println("fun of in, msg: " + msg);
            }
        }
    } 
    
    123456789 public class Study {
        public static void main(String[] args) {
            Out.In in1 = new Out().new In("first");
            //create In type varable
            Out.In in2;
            Out out = new Out();
            in2 = out.new In("Second"); 
        }//main
    } 
    

    3.局部内部类

    4.匿名内部类

    //Command.java
    public interface Command {
        void process(int[] target);
    } 
    
    1234567891011121314 //AddCommand
    public class AddCommand implements Command {
     
        @Override
        public void process(int[] target) {
            // TODO Auto-generated method stub
            int sum = 0;
            for (int tmp : target) {
                sum += tmp;
            }
            System.out.println(sum);
        }
     
    } 
    
     //ProcessArray.java
    public class ProcessArray {
        public void process(int[] target, Command cmd){
            cmd.process(target);
        }
    } 
    
    12345678 //Main.java
    public class Main {
        public static void main(String[] args){
            ProcessArray ay = new ProcessArray();
            int[] array = {1, 2, 3};
            ay.process(array, new AddCommand());
        }
    } 
    

    将类的实现用匿名内部类替换:

     //Main.java
    public class Main {
        public static void main(String[] args){
            ProcessArray ay = new ProcessArray();
            int[] array = {1, 2, 3};
            ay.process(array, new AddCommand()
            {
                @Override
                public void process(int[] target) {
                    // TODO Auto-generated method stub
                    int sum = 0;
                    for (int tmp : target) {
                        sum += tmp;
                    }
                    System.out.println(sum);
                }
            });
        }
    }
    
  • 相关阅读:
    ⑬linux基础命令 wget
    爱情的诗·21~25节
    爱情的诗·16~20节
    爱情的诗·11~15节
    人生的诗·406~410节
    唐诗宋词学习·126~130节
    爱情的诗·6~10节
    人生的诗·401~405节
    唐诗宋词学习·121~125节
    唐诗宋词学习·100~105节
  • 原文地址:https://www.cnblogs.com/bugstar/p/8492482.html
Copyright © 2011-2022 走看看