zoukankan      html  css  js  c++  java
  • 一、基础篇--1.1内部类

    内部类主要有4种:

    1.静态内部类(static inner class)

    定义如下:

    class OutClass{
        static class InnerClass{} //静态内部类
    }
    

    静态内部类是指被声明为static的内部类,它不依赖与外部类实例而被实例化。静态内部类不能访问外部类的普通成员变量,只能访问外部类中的静态成员和静态方法包含私有类型)。

    2.成员内部类(member inner class)

    定义如下:

    class OutClass{
        class InnerClass{} //成员内部类
    }
    

    成员内部类就是普通的内部类,可以自由引用外部类的方法,不管是静态还是非静态,但是内部不可以定义静态的方法和属性,而且只有被内部类被实例化后,这个类才能被实例化。

    3.局部内部类(local inner class)

    定义如下:

    class OutClass{
        public void doSomeWork(){
            class innerClass{} //局部内部类
        }
    }
    

    局部内部类是定义在代码块中的类,它的作用范围为所在的代码块中,极少用到。局部内部类跟局部变量比较类似,不能被public、protected、private以及static修饰,只能访问方法中定义为final类型的局部变量。如果局部内部类,在静态的代码块或者方法中,则会变成局部静态内部类。

    4.匿名内部类(anonymous inner class)

    定义如下:

    class OutClass{
        new Runnable(){
    
                @Override
    
                public void run() {
    
                    
    
                }
    
            }.run();
    }
    

    匿名内部类是一个没有类名的内部类,不能使用关键字class、extends、implement,没有构造函数,自身必须继承其他类或者接口。匿名内部类的好处是代码更加简洁。使用内部类需要牢记一下几个原则:

    1.匿名内部类不能有构造函数;

    2.匿名内部类不能定义静态成员、方法和类;

    3.匿名内部类不能是public、protected、private、static;

    4.只能创建内部类的一个实例;

    5.一个匿名内部类一定是在new的后面,必须继承一个父类或者实现一个接口;

    6.匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。

  • 相关阅读:
    Java基础---多线程
    Java基础---多态、内部类、异常、包
    Java基础---继承、抽象、接口
    Java基础---面向对象
    NSOperation使用
    根据两个日期计算相差的年月日
    代理模式简单说明
    Lua程序设计入门
    zmq-ios framwork
    cocoapods安装与使用
  • 原文地址:https://www.cnblogs.com/foreverYoungCoder/p/10471011.html
Copyright © 2011-2022 走看看