• 内部类


    内部类大致分为4种:

    1)匿名内部类(几乎是最常用的)

    package com.medivh.learn12;
    
    import java.util.Date;
    /*
     * 匿名内部类
     * 要想实现匿名内部类,那么这个内部类必须是继承了某个类或者实现了某个接口
     */
    public class AnoInnerClass
    {
    	public static void main(String[] args)
    	{
    		AnoInner an = new AnoInner();
    		
    		String time = an.getDate(new Date()
    		{
    			private static final long serialVersionUID = 1L;
    
    			public String toLocaleString()
    			{
    				return "hell Medivh";
    			}
    		}
    		);
    		
    		System.out.println(time);
    	}
    }
    class AnoInner
    {
    	@SuppressWarnings("deprecation")
    	public String getDate(Date date)
    	{
    		return date.toLocaleString();
    	}
    }

    程序结果:

    hell Medivh

    2)静态内部类
    package com.medivh.learn12;
    
    /*
     * 静态内部类
     */
    public class InnerClassTest
    {
    	public static void main(String[] args)
    	{
    		InnerClass.InnerClass1  i1 = new  InnerClass.InnerClass1();
    		
    		i1.printA();
    	}
    	
    		public static class Inner
    		{
    			
    		}
    }
    class InnerClass
    {
    	public static int a =4;
    	
    	public static class InnerClass1
    	{
    		public void printA()
    		{
    			System.out.println(a);
    		}
    	}
    }

    程序结果:

    4

    3)成员内部类

    package com.medivh.learn12;
    
    public class MemInnerClass
    {
    		public static void main(String[] args)
    		{
    			Test.MemInner mem = new Test().new MemInner();
    			
    			mem.print();
    			
    		}
    }
    /*
     * 成员内部类
     */
    class Test
    {
    	private int a = 4;
    	
    	public class MemInner
    	{
    		private int a = 5;
    		
    		public void print()
    		{
    			System.out.println("Test.a="+Test.this.a);
    			
    			System.out.println("MemInner.a="+this.a);
    		}
    	}
    }

    程序结果:

    Test.a=4
    MemInner.a=5

    4)方法内部类

    package com.medivh.learn12;
    
    public class LocalInnerClassTest
    {
    	public static void main(String[] args)
    	{
    		LocalInner l = new LocalInner();
    		
    		l.print();
    	}
    }
    /*
     * 方法内部类
     */
    class LocalInner
    {
    	public void print()
    	{
    		final  int  a = 4;
    		class Inner
    		{
    			void print()
    			{
    				System.out.println(a);//只能调用final成员变量
    			}
    		}
    		new Inner().print();
    	}
    }

    程序结果:

    4


  • 相关阅读:
    javascript和C#比较
    前端模块管理器简介
    javascript中的splice方法介绍&示例
    javascript中数组揭秘
    17款code review工具
    IIS ip访问限制插件
    iis 限制动态IP地址访问次数
    AWS云使用100条宝贵经验分享
    C# 开源框架(整理)
    如何获取Azure AD tenant的tenant Id?
  • 原文地址:https://www.cnblogs.com/MedivhQ/p/4074969.html
Copyright © 2020-2023  润新知