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();
    }
     
  • 相关阅读:
    mysql复制那点事
    全排列问题
    56. Merge Interval
    2. Add Two Numbers
    20. Valid Parentheses
    121. Best Time to Buy and Sell Stock
    120. Triangle
    96. Unique Binary Search Trees
    91. Decode Ways
    72. Edit Distance
  • 原文地址:https://www.cnblogs.com/xiaoliangup/p/9119974.html
Copyright © 2011-2022 走看看