内部类只能让它的外部类访问,其他同包的类也无法访问!方法里也能建内部类
1 public class Innerclasses { 2 public static void main(String[] args){ 3 Face f=new Face();// 必须让外部类先创建一个实例,才能调用内部类! 4 Face.Nose n=f.new Nose();//这里不能直接!!调用face类里的nose类 Nose n=new Nose(); 5 n.breath(); 6 Face.Ear e=new Face.Ear(); 7 e.listen();//静态内部类和其他的不同可以一步就创建一个实例,不需要外部类存在实例就直接建一个实例。 8 } 9 } 10 11 12 class Face{ 13 int type; 14 String xingzhuang="瓜子脸"; 15 static String color="红润"; 16 class Nose{ 17 String type; 18 void breath(){ 19 System.out.println(xingzhuang); 20 System.out.println(Face.this.type);//这里访问的是外部类里的type如果没加Face.则应该是访问自己的变量 21 //如果内部类没这个变量即没有重名可以直接调用type,如xingzhuang; 22 System.out.println("呼吸!"); 23 } 24 } 25 static class Ear{ 26 void listen(){ 27 System.out.println("我在听!"); 28 System.out.println(color);//静态内部类只可以调用外部类中的静态变量,非静态的不行; 29 //静态内部类看作外部类的一个静态成员!静态内部类对象存在,不一定存在对应的外部类对象 30 } 31 } 32 }
内部类可以访问调用外部类中的属性但是外部类无法调用内部类的内部属性