形参和返回值

抽象类名作为形参和返回值

接口名作为形参和返回值

内部类

内部类概述

  • 内部类:就是在一个类中定义一个类
  • 内部类的定义格式

格式:

   public class 类名{
       修饰符 class 类名{
       }
   }

范例:
java public class Outer{ public class Inner{ } }

成员内部类

    //成员内部类
    public class Outer {
        private int num = 10;

        /*
        public class Inner {
            public void show(){
                System.out.println(num);
            }
        }
        */
        private class Inner {
            public void show(){
                System.out.println(num);
            }
        }

        public void method(){
            Inner i = new Inner();
            i.show();
        }
    }
    //测试类
    public class InnerDemo {
        public static void main(String[] args){
//          Outer.Inner oi = new Outer().new Inner();
//          oi.show();//10

            Outer o = new Outer();
            o.method();//10
        }
    }

局部内部类

    //局部内部类
    public class Outer {
        private int num = 10;

        public void method(){
            int num2 = 20;
            class Inner{
                public void show(){
                    System.out.println(num);
                    System.out.println(num2);
                }
            }

            Inner i = new Inner();
            i.show();
    //测试类
    public class OuterDemo {
        public static void main(String[] args){
            Outer o = new Outer();
            o.method();
            //10
            //20
        }
    }

匿名内部类

  • 格式:
   new 类名或者接口名(){
       重写方法;
   }
  • 范例:
   new Inter(){
       public void show(){
       }
   }
    public class Outer {
        public void method() {
            /*
            new Inter() {
                @override
                public void show() {
                    System.out.println("匿名内部类");
                }
            }.show();
            */
            Inter i = new Inter(){
                @override
                public void show() {
                    System.out.println("匿名内部类");
                }
            };
            //多次调用
            i.show();
            i.show();
        }
    }
    public interface Inter {
        void show();
    }
    public class OuterDemo {
        public static void main(String[] args){
            Outer o = new Outer();
            o.method();
        }
    }
12-31 13:58