一般类,抽象类,接口的使用场景:
类;共同的特征和行为的抽取和封装
接口:标准,规范(功能的扩展)
需要对某个类进行功能的扩展,就让某个类实现这个接口,抽取出来称为接口
内部类:
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的个数