内部类
-
在一个类的内部在定义一个类,如,A类中定义一个B类
1、 则B类相对A类来说就称为内部类
2、A类相对B类来说就是外部类了 -
内部类分类
1.成员内部类
⒉静态内部类
3.局部内部类
4.匿名内部类 -
内部类实例
public class C12NeiBuLei {
public static void main(String[] args) {
/**
* 通过这个外部类来实例化内部类
*/
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.getId();
/**
* 没有名字初始化类,不用讲实例保存到变量中~
*/
new Apple();
new Apple().eat();
/**
* 匿名内部类
*/
UserService userService = new UserService() {
@Override
public void hello() {
}
};
}
}
class Apple{
public void eat(){
System.out.println("1");
}
}
interface UserService{
void hello();
}
public class Outer {
private int id=10;
public void out(){
System.out.println("这是外部类的方法");
}
/**
* 3、局部内部类
*/
public void method(){
class Inner{
public void in(){
}
}
}
/**
* 1、成员内部类
*/
public class Inner{
public void in(){
System.out.println("这是内部类方法");
}
/**
* 可以获得这个外部类的私有属性
* 当内部类通过static 修饰时,无法获取id,这时由于static 修饰的内部类实例化早于 非static的id
*
*/
public void getId(){
System.out.println(id);
}
}
/**
* 2、静态内部类
*/
public static class Inner1{
}
}
/**
* 一个java类文件,只允许有一个public class暴露在最外面
* (内部类 是在public class{} 的花括号中内部)
* 但允许有多个class 类
*/
class A{
}