内部类——Java程序设计基础

一、定义

Java支持在一个类中定义另一个类,这样的类称作内部类,而包含内部类的类为内部类的外嵌类。内部类就是外嵌类里定义的一个类型而已,只不过,该类型仅仅限于在本外嵌类中使用。

二、访问权限

外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。 内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。其他类不可以用个类的内部类声明对象 

访问修饰符:public ,protected private 对内部类没有区别,因为内部类仅仅在该外嵌类中可以被使用。


注意的是,Java编译器生成的内部类的字节码文件的名字和通常的类不同,内部类对应的字节码文件的名字格式是“外嵌类名$内部类名”,例如,例子1中内部类的字节码文件是RedCowForm$RedCow.class。因此,当需要把字节码文件复制给其他开发人员时,不要忘记了内部类的字节码文件。

内部类示例:

public class Example6_1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
	  RedCowForm form = new RedCowForm("红牛农场");
      form.showCowMess();
      form.cow.speak();
	}

}

public class RedCowForm {
	  public static String formName;
	  RedCow cow;                  //内部类声明对象
	  
	  public RedCowForm() {			//	无参构造方法
	   }
	   
	  public RedCowForm(String s) {	//	含参构造方法
	      cow = new RedCow(150,112,5000);
	      formName = s;
	   }
	   
	  public void showCowMess() {
	      cow.speak();
	  }
	  
	  class RedCow {  //内部类的声明
	      protected String cowName = "红牛";
	      private int height,weight,price;
	      public RedCow(int h,int w,int p){
	          height = h;
	          weight = w;
	          price = p;
	      }
	      
	      public void speak() {
	         System.out.println("偶是"+cowName+",身高:"+height+"cm 体重:"+
	        		 weight+"kg,生活在"+formName);
	      }
	 }    
}

猜你喜欢

转载自blog.csdn.net/Mr_Morgans/article/details/121310680