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

    内部类概念:把类写在其他类的内部,可以写在其他类的成员位置和局部位置,这个时候写在其他类内部的类就成为内部类

    什么时候用:当描述一个事物的时候,如果这个事物内部还包含其他的类,那就可以用内部类来描述事物包好的食物

    分类:内部成员类,局部内部类

    成员内部类:写在类的成员变量或成员方法处

    定义格式:

        class 外部类 { 
        修饰符 class 内部类 {
            //其他代码
    }
    }

    访问方式:

    外部类名.内部类名 变量名 = new 外部类名().new 内部类名();

    代码演示,定义一个内部类

    package com.oracle.demo03;
    
    public class Outer {
        int num=1;
        //成员内部类
        class Inner{
            int num=2;
            public void in(){
                int num=3;
                //System.out.println(num); num=3
                //System.out.println(this.num);=2
                System.out.println(Outer.this.num);
            }
        }
    }

    访问调用

    package com.oracle.demo03;
    
    public class test {
        public static void main(String[] args) {
            Outer.Inner oi=new Outer().new Inner();
            oi.in();
        }
    }

    局部内部类:定义在外部方法中的局部位置,访问方式和局部变量相似

    定义格式:

    class 外部类 { 
        修饰符 返回值类型 方法名(参数) {
    class 内部类 {
    //其他代码
    }
    }
    }

    访问方式:在外部类方法中,创建内部类对象,进行访问

    代码  定义一个局部内部类

    package com.oracle.demo04;
    //外部类
    public class Outer {
        public void out(){
            //局部内部类
            class Inner{
                public void in(){
                    System.out.println("这是局部内部类方法");
                }
            }
            //调用方法
            Inner in=new Inner();
            in.in();
        }
    }

    访问调用

    package com.oracle.demo04;
    
    public class test {
        public static void main(String[] args) {
            Outer outer=new Outer();
            outer.out();
        }
    }

    内部类在实际中的使用:匿名内部类

    概念:1.临时定义某一个指定类型的子类

        2.顶一哈即可创建刚刚定义的这个子类的对象

    作用:匿名内部类是创建某个类型子类对象的快捷方式

    格式

    new 父类或接口(){
        //进行方法重写
    };

    例子:

    package com.oracle.demo05;
    
    public interface Smoking {
        public abstract void smoke();
        public abstract void eat();
    }
    package com.oracle.demo05;
    
    public class test {
        public static void main(String[] args) {
            //匿名内部类对象
            //new 父类或接口(){ 进行方法重写 }
            new Smoking(){
                public void smoke(){
                    System.out.println("抽烟");
                }
                public void eat(){
                    System.out.println("吃饭");
                }
            }.smoke();;
        }
    }
  • 相关阅读:
    zoj1589Professor John
    zoj1082Stockbroker Grapevine
    zoj1311Network
    zoj1060Sorting It All Out
    zoj1119SPF
    zju1085Alien Security
    zoj 2474Benny's Compiler
    zoj1068P,MTHBGWB
    what's next?
    ski for the first time~
  • 原文地址:https://www.cnblogs.com/mr171733/p/9707039.html
Copyright © 2011-2022 走看看