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

    内部类类型

    public class NestedClassDome01 {
        //静态内部类
        private static class StaticNestedClass{    
        }
        //普通内部类
        private class FieldInnerClass{
        }
        
        void test(){
            //局部内部类
            class LocalClass{
            }
            
            //局部匿名内部类
            Runnable run=new Runnable(){
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                }};
        }
    }

    静态内部类基本用法

    可以包含静态和非静态成员

    静态内部类可以访问外部类的静态属性和静态方法,不能调用外部类的普通方法和属性

    在不相关类中,可以直接创建静态内部类的对象

    普通内部类

    可以方便使用外部类的所有成员,只为外部类服务

    内部类中 this代表内部类的对象,引用外部类对象为Out03.this

    Outer03 out=new Outer03( );

    Outer03.InnerClass ic=out.new InnerClass( )

    成员内部类不能有静态成员变量和方法,除非申明为final并且只能是编译器可以确定值的常量,如果有static InnerClass,内部类对象完全脱离外部类对象,违背了普通内部类的设计初衷

    方法内部类

    相当于方法中的局部变量,不能用private、protected等修饰
    只能定义非静态的成员

    不能引用所在方法的普通局部变量,除非是常量。原因如下:方法的生命周期和方法内部类对象的生命周期不一致。方法执行完,内部类对象仍可能存在

    匿名内部类

    三种方式:继承式,接口式,参数式

    public class NestedClassDome03 {
        Father father=new Father(){
            @Override
            public void test() {
            }
        }; 
    }
    
    abstract class Father{
        public abstract void test();
    }
     
  • 相关阅读:
    例6-5
    例6-3
    例6-2
    例6-1
    例5-9
    python3
    python3
    python3
    python3
    python3
  • 原文地址:https://www.cnblogs.com/xiaoliangup/p/9119974.html
Copyright © 2011-2022 走看看