java的内部类

在java里面,有一种非常重要的结构,那就是我们的内部类.Java里面内部类分为四种,分别是成员内部类,局部内部类,匿名内部类,和静态内部类。

那么什么是内部类,就是在类里面在定义一个类。我们称之为内部类。

下面,我们依次来看看这几种内部类,首先来看看成员内部类.

package innerobject;

public class deno1 {
	innerclass innertest = new innerclass();

	// 定义外部类的成员方法.
          public void outf() {
		// 在外部类的成员方法里面调用内部类的成员方法是通过
		// 内部类的实例来实现的。调用内部类的方法.
		innertest.inf();
	}

	public class innerclass {
		int y = 0;

		// 定义内部类的构造方法
		public innerclass() {

		}

		// 定义内部类的成员方法.
		public void inf() {
			System.out.println("这个是内部内的成员方法y=" + y);
		}
	}

	public static void main(String[] args) {
		// 定义主方法.
		deno1 test = new deno1();
		test.outf();
		//创建内部类对象.
		deno1.innerclass in = test.new innerclass();
		in.inf();
	}
}

所谓成员内部类,就是在外部类的 成员方法里面定义的一个类.通过内部类的对象来实现对内部类的成员方法的调用.,然而在main方法创建内部类对象的是通过外部类点的方式来实现创建的.

所谓的局部内部类,就是在内部类的方法里面定义的一个 类,我们称之为局部内部类。

package innerobject;
//局部内部类
public class deno3 {
	public outinterface action(String x) {//局部内部类
		//局部内部类.
       class innerclass2 implements outinterface{
    	   //内部类的构造方法.
    	  public innerclass2(String s) {
    		  s=x;
    		  System.out.println(s);
    	  }
      }
       return new innerclass2("do");
	}
	public static void main(String[] args) {
		deno3 d2=new deno3();
		d2.action("局部内部类");
		
	}

}
interface outinterface{
	
}

在这里如何调用局部类的了。我们通过java的接口实现了向上转型,最后将该接口返回的方法来实现.在类的内部返回该类的 一个

实例就可以了,

下main我们来看看匿名内部类,就是在程序运行的 时候动态的 创建的。因为没有名字,所以,我们称之为 匿名内部类。

下面我们来看看代码.

package innerobject;
public class deno4 {
	public outinterface2 action() {
		//return new innerClass2();
		return new outinterface2() {
			//匿名内部类的效果。是java变成里面最常用的内部类。
			private int i = 0;

			public int getValue() {
				return i;
		}

		};
		
	}
		
		//	
}
interface outinterface2 {

}

class innerClass2 implements outinterface2 {
	private int i = 0;

	public int getValue() {
		return i;

	}
}

其中//return new innerClass2();和return new outinterface2()效果是一样的,只不过前者在后面通过一个接口来实现了。

下面我们来看看静态内部类。还是来看看代码吧.

package innerobject;

public class deno5 {
	 static int x=100;
   public static class inner{
	   void action() {
		   x=1;
	   }
	   public static void main(String[] args) {
		System.out.println("我是静态内部类的效果");
	}
   }

}

静态内部类,最主要的就是在内部类里面定义一个main方法,在一般情况下,我们的main方法是定义在外部类里面的。静态内部类主要来实现调试功能的。

你可能感兴趣的:(Java面向对象基础)