常用类
内部类
package com.outer;
public class Outer {
public String name="lv";
private int age=21;
public class Inner{
private String name="cj";
public void print(){
System.out.println(name);//内部类当属性名与外部类属性名相同的时候,有限访问内部类
System.out.println(Outer.this.name);//通过 外部类+点+this+点+属性名访问外部属性
System.out.println(Outer.this.age);
}
}
}
package com.oop;
import com.outer.Outer;
import com.outer.Outer.*;
public class Application {
public static void main(String[] args) {
// Outer outer = new Outer();//创建外部类对象
// Inner inner=outer.new Inner();//创建内部类对象
Inner inner =new Outer().new Inner();//可以合并为
inner.print();
// Outer outer = new Outer();
//
// System.out.println(outer.name);
}
}
静态内部类
package com.outer;
import java.util.Arrays;
public class Outer1 {
private String name ="A";
private int age=10;
public static class Inner{//静态内部类
private String name="B";
private int[] a={1,3,5};
private static String d="hello";
public void print(){
Outer1 outer1 = new Outer1();
System.out.println(outer1.name);//静态内部类调用外部属性 类名+ 点+属性名
System.out.println(outer1.age);
System.out.println(this.name);
System.out.println(Inner.d);
System.out.println(Arrays.toString(a));//Arrays.toString 打印数组元素
}
}
}
package com.oop;
import com.outer.Outer1;
public class Application {
public static void main(String[] args) {
Outer1.Inner inner = new Outer1.Inner();//静态内部类的调用 外部类名.静态内部类名() 对象 = new 外部类名.静态内部类名();
inner.print();
}
}
局部内部类
package com.outer;
public class Outer2 {
private String name ="cj";
private int age=21;
public void print(){
//定义局部变量
String address="深圳";
// String name="55"; 第三访问
//局部内部类不能加任何访问修饰符
class Inner{
// 局部内部类属性
// private String name="lv"; 第二访问
private String id="123";
public void print1(){
// String name="455"; 优先级第一访问
System.out.println(name);//局部内部类可以访问外部类属性,同样属性名相同的按照优先级访问
System.out.println(id);
}
}
//创建局部内部类的对象
Inner inner=new Inner();
inner.print1();
}
}
package com.oop;
import com.outer.Outer1;
import com.outer.Outer2;
public class Application {
public static void main(String[] args) {
Outer2 outer2 = new Outer2();
outer2.print();
}
}