内部类
1.内部
2.类
简单来说,就是写在另一个类里面的那个类。
里面的这个类,我们就称之为内部类。
因为内部类所在的位置不同。
我们可以把他分为:成员内部类,局部内部类。
又可以把类有名字还是没有名字加以区别:匿名内部类
//熟悉
1,成员内部类
a.会写
就是把一个类,写在另一个类的里面的成员位置。
class Outer{ //外部类
String number;
//也可以把成员内部类理解成外部类的一个成员。
class Inner{ //内部类
public void show(){
System.out.println("成员内部类的方法");
}
}
}
b.会创建内部类的对象
//来调用外部类的成员变量。
String s = new Outer().number;
//这个变量的类型是:
//Outer这个类里面Inner的类型
Outer.Inner oi= new Outer().new Inner();
c.会调用内部类里面的方法
oi.show();
//熟悉
2,局部内部类
a.会写
就是一个类写在另一个类的方法里面。
class Outer{
public void method(){
class Inner{
public void function(){
System.out.println("局部内部类");
}
}
}
}
b.会创建内部类的对象
只能在方法内,且必须要在类的定义下面创建。
c.会调用内部类里面的方法
直接使用对象调用就可以了。
//上面的这两个在实际开发中,用的比较少。
//在实际开发中使用非常多
//且是后面lambda表达式的前提,所以必须要掌握。
3,匿名内部类
核心思想:
就是为了少写一个类而已。
使用场景:
如果一个接口或者一个抽象类的子类
只需要使用一次,那么就可以使用匿名内部类。
案例:
public class Demo1 {
public static void main(String[] args) {
aaa(new Inter() {
@Override
public void method() {
System.out.println("匿名内部类");
}
});
}
public static void aaa(Inter inter){
inter.method();
}
}
interface Inter {
public abstract void method();
}
//如果我这个类只需要使用一次,那么还要定义一个类,就很复杂了。
class InterImpl implements Inter {
@Override
public void method() {
System.out.println("方法");
}
}
|
|