内部类的使用及注意事项

/*
 * 类的内部成员之五:内部类
 * 1. Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类
 * 
 * 2.内部类的分类:成员内部类(静态、非静态)  vs 局部内部类(方法内、代码块内、构造器内)
 * 
 * 3.成员内部类:
 * 		一方面,作为外部类的成员:
 * 			>调用外部类的结构
 * 			>可以被static修饰
 * 			>可以被4种不同的权限修饰
 * 
 * 		另一方面,作为一个类:
 * 			> 类内可以定义属性、方法、构造器等
 * 			> 可以被final修饰,表示此类不能被继承。言外之意,不使用final,就可以被继承
 * 			> 可以被abstract修饰
 * 
 * 
 * 4.关注如下的3个问题
 *   4.1 如何实例化成员内部类的对象
 *   4.2 如何在成员内部类中区分调用外部类的结构
 *   4.3 开发中局部内部类的使用
 * 
 */
public class InnerClass {
   public static void main(String[] args) {
   	//4.1 如何实例化成员内部类的对象
   		//1、普通类的实例化,需要外部类的实例
   		A a = new A();
   		A.B1 b1= a.new B1();  //记忆:通过对象去dot
   		//A.B1 b1 = new A.B1();//不能成功调用
   		
   		//2. 静态内部类化
   		A.B2 b2= new A.B2();
   		b1.doSomething('q');
   }
}
class A{
   class B1{//这就叫内部类
   	char B = '1';
   	public void  InnerMethod () {
   		System.out.println("Inner!");
   	}
   	//4.2 如何在成员内部类中区分调用外部类的结构
   	public  void doSomething(char c) {
   		System.out.println(c);
   		System.out.println(this.B);//1
   		System.out.println(B);//1
   		System.out.println(A.B1.this.B);
   		//求指点
   		//System.out.println(A.B2.this.B);   //No enclosing instance of the type
   		//System.out.println(A.B3.this.B);		//No enclosing instance of the type
   	}
   }
   
   static class B2{//静态内部类
   	char B = '2' ;
   	public void InnerStaticMethod() {
   		System.out.println("InnerStatic!");
   	}
   }
   
   class B3{
   	int B = 10;
   }

   public void OuterMethod() {
   	System.out.println("Outer!");
   	class C{//方法中的内部类(局部内部类)(极其少见)
   		//4.3 开发中局部内部类的使用
   		
   		//返回一个实现了Comparable接口的类的对象
   		public Comparable getComparable(){
   			
   			//创建一个实现了Comparable接口的类:局部内部类
   			//方式一:
//				class MyComparable implements Comparable{
   	//
//					@Override
//					public int compareTo(Object o) {
//						return 0;
//					}
//					
//				}
//				
//				return new MyComparable();
   			
   			//方式二:
   			return new Comparable(){
   				//匿名对象
   				@Override
   				public int compareTo(Object o) {
   					return 0;
   				}
   			};
   			
   		}
   	}
   
   }
}
posted @ 2021-01-21 12:18  QU头  阅读(160)  评论(0编辑  收藏  举报