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

    内部类有成员内部类,局部内部类,匿名内部类,静态内部类。

    1,成员内部类package innerClass;

    public class InnerClassTest {
        String s1="我是外部成员变量。。";
        public static String s2="我是外部静态变量..";
        class Inner{
            void innerTest(){
                String s1="我是内部成员变量";
                String s2="我是内部成员变量";
                System.out.println(s1 +"
    "+ s2);
                System.out.println(InnerClassTest.this.s1);
            }
        }public static void main(String[] args) {
            InnerClassTest out = new InnerClassTest();
            Inner inner =  out.new Inner();
            inner.innerTest();
        }
    }


    输出:

      我是内部成员变量

    
    

      我是内部成员变量

    
    

      我是外部成员变量。。

     

    a,内部类的变量和方法会隐藏外部类的成员变量和方法,可以通过外部类的对象调用外部类变量和方法。

    b,内部类实例化通过外部类的对象来实现。

    2,局部内部类,定义在方法内部或一个作用域里面的类

    package innerClass;
    
    public class PartInnerClass {
        public String getSomething(){
            class Inner{
                String s = "我是内部类的成员变量";
            }
            return new Inner().s;
        }
        public static void main(String[] args) {
            System.out.println(new partInnerClass().getSomething());
        }
    }

    输出:

       我是内部类的成员变量

     

    3,匿名内部类,只要是一个抽象类或者接口,那么他的方法都可以在子类中实现,最常用的是多线程的实现,如:

    package innerClass;
    
    public class AnonymousInnerClass {
        public static void main(String[] args) {
            Runnable r = new Runnable(){
                public void run(){
                    System.out.println("I'm anonymous class.");
                }
            };
            Thread t = new Thread(r);
            t.start();
        }
    }

    4,静态内部类,和成员内部类有两个区别:a,实例化不依赖外部类,b,不能直接访问外部类的非静态变量和方法

    package innerClass;
    
    public class StaticInnerClass {
        int i=1;
        static int j=2;
        static class InnerClass{
            void test(){
                //静态内部类不能访问外部类的非静态方法和变量
                System.out.println(new StaticInnerClass().i);
                System.out.println(j);
            }
        }
        public static void main(String[] args) {
            //不需要依赖外部类
            InnerClass inner = new InnerClass();
            inner.test();
        }
    }
  • 相关阅读:
    GitHub常用 库
    App性能优化
    iOS App性能优化
    UIButton图片与文字位置调整
    Mac常用目录
    js数字转金额,ajax调用接口,后台返回html(完整页面),打开新窗口并写入html
    js坑 把数字型的字符串默认为数字 把前面的0给去掉了("001")
    url跳转路径参数获取
    常用正则表达式,手机号,邮箱,网址
    Js获取操作系统版本 && 获得浏览器版本
  • 原文地址:https://www.cnblogs.com/dfdi33/p/5262699.html
Copyright © 2011-2022 走看看