JAVA学习之局部内部类,匿名内部类,静态内部类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA学习之局部内部类,匿名内部类,静态内部类相关的知识,希望对你有一定的参考价值。

分别写了一个匿名内部类和静态内部类的程序,局部内部类感觉就是后两者的一般情况,后两者则是前者的特殊应用。

局部内部类:在一个方法中定义一个类,不可以用public或static进行声明,可以对外部完全隐藏,只有该方法可以调用。

匿名内部类:不用写类的定义头部分,直接写类体,我个人感觉不太好,只有在接口要定义函数时用比较好吧?这种类不能有构造函数,所以它调用超类的构造函数,注意在内部类实现接口时不能有参数。

静态内部类:如果只是单存为了隐藏一个类,而不用内部类去调用外围对象,则可以用这种类,用起来有点像是Arrays.sort()。

package staticInnerClass;

public class StaticInnerCLassTest
{
	public static void main(String[] args)
	{
		double[] d=new double[20];
		for(int i=0;i<20;i++)
			d[i]=100*Math.random();
		ArrayAlg.Pair p=ArrayAlg.minmax(d);
		System.out.println(p.GetFirst());
		System.out.println(p.GetSecond());
	}
}

class ArrayAlg
{
	public static class Pair
	{
		private double first;
		private double second;
		public Pair(double first,double second)
		{
			this.first=first;
			this.second=second;
		}
		public double GetFirst()
		{
			return this.first;
		}
		public double GetSecond()
		{
			return this.second;
		}
	}
	public static Pair minmax(double[] value)
	{
		double min=Double.MAX_VALUE;
		double max=Double.MIN_VALUE;
		for(double v:value)
		{
			if(min>v)
				min=v;
			if(max<v)
				max=v;
		}
		return new Pair(min,max);
	}
}

  

package anonymousInnerClass;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;

public class AnonymousInnerClassTest
{
	public static void main(String[] args)
	{
		TalkingClock clock=new TalkingClock();
		clock.start(1000,true);
		
		JOptionPane.showMessageDialog(null,"Quit the program?");
		System.exit(0);
	}
}

class TalkingClock
{
	public void start(int interval,boolean beep)
	{
		ActionListener listener=new ActionListener()
				{
					public void actionPerformed(ActionEvent event)
					{
						Date now=new Date();
						System.out.println("At the tone,the time is "+now);
						if(beep)
							Toolkit.getDefaultToolkit().beep();
					}
				};
		Timer t=new Timer(interval,listener);
		t.start();
	}
}

  

 

以上是关于JAVA学习之局部内部类,匿名内部类,静态内部类的主要内容,如果未能解决你的问题,请参考以下文章

Java语言中四种内部类(成员内部类,局部内部类,静态内部类,匿名内部类)在实际使用中有啥好处?

Java内部类详解(含:成员内部类局部内部类匿名内部类静态内部类)

静态非静态内部类匿名内部类局部内部类

java-07 内部类匿名内部类局部内部类lambda

Java——基础知识——内部类

JavaSE基础(十 三 )---<内部类>成员内部类,静态内部类,局部内部类,匿名内部类,内部类的意义