java类,接口浅谈




一般类,抽象类,接口的使用场景:



类;共同的特征和行为的抽取和封装



接口:标准,规范(功能的扩展)


        需要对某个类进行功能的扩展,就让某个类实现这个接口,抽取出来称为接口



 



内部类:



 



1.成员内部类:



该类与外部类的属性和方法平级



Outer outer =new Outer();
 
   
outer.show();
 
   
//创建内部类的实例
 
   
Outer.Inner inner=outer.new Inner();
 
   
//实例.new方法
 
   
inner.showInner();


创建成员内部类的对象:



外部类类名.内部类类名 对象名= 外部类对象.new 内部类对象; 



 外部类.this:表示访问与内部类同名的外部类属性



 



2.局部内部类;



作用域:所在的方法体



局部变量不能用可见性修饰符修饰(类体里面可以)



局部变量是常量,用final修饰



 



3.静态内部类:



该类与外部类的静态属性和静态方法平级



访问权限修饰符 static class 内部类名{}



 



4:匿名内部类:



应用场景:Button按钮的事件监听



定义在外部类中,没有名字且只会被使用一次的内部类



访问权限修饰符 class 外部类{



属性和方法



写法一: 属性//接口



访问权限修饰符 接口类型 属性名 =new 接口类型(){



//类体
 
   
};



方法二: 方法体中



访问权限修饰符 返回值类型 方法名(形参){
 
   
 //局部变量可以使用匿名内部类
 
   
new 接口类型(){
 
   
 //类体
 
   
}.接口中的方法();
 
   
//或者是:
 
   
接口类型 局部变量=new 接口类型(){
 
   
//类体
 
   
};
 
   
}
 
   
}



写法一:new了一个实现类的实例,创建接口的引用对象



Inter a=new Inter(){public void show(){}};//接口不能单独new,所以new一个实现类的实例


 



写法二:


外部类:public void display(){new Intera(){public void show(){} };
 
   
intera2.show(); //调用类体里面的方法
 
   
外部类的实例调用这个方法
 
   
}



 



写法三:intera2.show();.show() //实例点方法



 



匿名内部类除了接口外,还能用抽象类,普通类;来写



匿名内部类继承了抽象类,该匿名类体中可以不重写



普通类:new的是普通类匿名的子类的实例



private Common c=new Common(){public void show(){} };
 
   
//匿名内部咧可以书写特有的方法,但是永远不会调用



匿名内部类的特点:



1.只使用一次,定义在外部类的属性部分或者方法体部分



2.可实现java语言的多继承(类都是单继承;内部类实现多继承,外部类可以继承一个类,内部类也可以继承,变象用内部类实现"多继承";)



3.从语法角度,类可以书写任意层数的类,没有限制(一般不超过两层)



4.内部可以写接口


除了匿名内部类之外,其余的内部类,怎么判断源文件生成的多少字节码文件: 根据class的个数