N种内部类

public class Outer {//只有内部类才能用static修饰
private int id=10;
public String out(){
System.out.println("这是外部类的方法");
return null;
}

//成员内部类:级别和外部类属性相同,不能定义静态属性
//成员内部类加上static就变为静态内部类:级别和外部类相同

public class Inner{
public void in(){
System.out.println("这是内部类的方法");
}

//获得外部类的私有属性
public void getId(){
        Outer outer = new Outer();访问外部类属性时,需先创建外部类对象
System.out.println(outer.id);//外部类属性与内部类属性名相同时,优先访问内部类属性;如果想访问外部类属性,需在前面加上Outer.this
        }

//获得外部类的私有方法
public void getOut() {
System.out.println(out());
}
}

//局部内部类:不能加任何访问修饰符

       public void method(){
class Inner{
public void inn(){
System.out.println(Outer.this.id);
}
}
Inner inner = new Inner();
inner.inn();
}

}

//一个java类中可以有多个class类,但只能有一个public class
class A{
public static void main(String[] args) {

}
}


public class Text{
public static void main(String[] args) {
//匿名内部类:必须继承一个父类或者实现一个接口
//没有名字初始化类,不用将实例保存到变量中
new Apple().eat();

new UsersService(){

@Override
public void go() {

}
};
}
}

class Apple{
public void eat(){
System.out.println("eat");
}
}

interface UsersService{
void go();


}


public class Application {
public static void main(String[] args) {
Outer outer = new Outer();

//通过外部类来实例化内部类
Outer.Inner inner = outer.new Inner();
inner.in();//这是内部类的方法
inner.getId();//10
inner.getOut();//这是外部类的方法 null
outer.method();




}
}
posted @ 2023-02-09 14:01  惊鸿宴远赴人间  阅读(12)  评论(0)    收藏  举报