zoukankan      html  css  js  c++  java
  • 内部类的复习

    内部类分为4种:

    1.成员内部类;

    2.静态成员内部类;

    3。局部内部类;

    4.匿名内部类

    成员内部类:它是作为一个外部类的一部分,它是可以调用外部成员,但外部类不能直接调用它::

    class Outer{

      int x=3;

      class Inner{

        public void show(){

          System.out.println("x"+x);

        }

      }

    }

    public class test{

      public static void main(String[] args){

        Outer.Inner in=newOuter().newInner();

        in.show();

      }

    }

    静态内部类:随着类的加载而加载

    class Outer{

      int x=3;

      class Inner{

        public void show(){

          System.out.println("x"+x);

        }

      }

    }

    public class test{

      public static void main(String[] args){

        Outer.Inner in=Outer.newInner();

        in.show();

      }

    }

    局部内部类:因为不同变量的周期不同,调用变量结果也不一样

    class Outer{

      //final int x=1;

      public void methoh(){

        int x=3;

        class Inner{

          int x=4;

          public void show(){

            System.out.println("x"+x);

          }

        }

        new Inner().show();

      }

    }

    public class test{

      public static void main(String[] args){

       Outer out=new Outer();

      out.methoh();

      }

    }

    内部类的继承: 可以实现在局部内部类中有多个方法被使用时,可以向上转型后通过创建父类对象来统一调用

    abstract class Inter{

      abstract void show();//抽象类

    }

    class Outer{

      int x=1;

      public void methoh(){

        int x=3;

        class Inner extends Inter{

          int x=4;

          public void show(){

            System.out.println("x"+x);

          }

        }

        //返回个Inner给父类Inter

        public Inter getInner(){

          return new Inner();

        }

        //子类Inner向上转型,然后调用子类show()方法

        new Inter().show();

      }

    }

    public class test{

      public static void main(String[] args){

        Outer out=new Outer();

        out.methoh();

      }

    }

    匿名内部类: 可以简化一些只被加载一次的类调用的代码

    abstract class Inter{

      abstract void show();//抽象类

    }

    class Outer{

      int x=1;

      public void methoh(){

        int x=3;

        new Inter(){

          public void show(){

            System.out.println("x"+x);

          }.show();

        }

      }

    }

    public class test{

      public static void main(String[] args){

        Outer out=new Outer();

        out.methoh();

      }

    }

  • 相关阅读:
    解决Oracle 11g 或 ODAC 11.2 多客户端版本的乱码问题
    C#.ToString()格式大全
    太阳的眼泪
    oracle database link 12154 tns 无法识别错误的解决方案
    List<T>泛型的Find 和 Where 用法范例
    chrome 下载工具支持
    解决,启动office2007时总出现“正在配置Microsoft Office Professional Plus 2007”的字样
    macOS M1 下pip install安装.whl报错“is not a supported wheel on this platform.
    Mail.Ru Cup 2018 Round 3 B. Divide Candies (数论)
    202120221 BUCT ACM集训队每周程序设计竞赛(8) 问题D :一月忘干净
  • 原文地址:https://www.cnblogs.com/daoxiang1992/p/5716474.html
Copyright © 2011-2022 走看看