java(二十九)【面向对象】内部类访问规则

一:内部类

定义:将一个类定义在另一个类里面,对里面那个类就成为内部类

访问特点:

  1.内部类可以直接访问外部类中的成员,包括私有类

 1 class waibu{
 2     private int x=2;
 3     class neibu{   //内部类
 4         void function(){
 5             System.out.println("haha:"+x);
 6         }
 7     }
 8         void method(){
 9             neibu nb=new neibu();
10             nb.function();
11         }
12 }
13 public class object {
14     public static void main(String[] args) {
15         waibu wb=new waibu();
16         wb.method();
17     }
18 }
View Code

结果:2

  思路详解:

  • 先建立waibu类对象,调用本类中的methon方法
  • 然后在methon方法new一个内部类对象,调用内部类中的function方法

  注意:可以将内部类private,因为内部类是外部类的一个成员,成员是可以被私有化的

  1.1:直接访问内部类中的方法

 1 class waibu{
 2     private int x=2;
 3     class neibu{   //内部类
 4         void method(){
 5             System.out.println("haha:"+x);
 6         }
 7     }
 8 }
 9 public class object {
10     public static void main(String[] args) {
11         waibu.neibu wn=new waibu().new neibu(); //直接访问内部类的方法
12         wn.method();
13     }
14 }
View Code

结果:2

  注意:当内部类定义在外部内的成员位置上,而且非私有,可以在外部其他类中直接建立内部类对象。格式为: 外部类名.内部类名 变量名=外部类对象.内部类对象;

          waibu.neibu wn=new waibu().new neibu();

  1.2:内部类可以直接访问外部类中的成员是因为内部类中有一个外部类的引用,格式 外部类名.this

 1 class waibu{
 2     int x=1; 
 3     class neibu{  
 4         int x=2;  
 5         void method(){  //外部类方法
 6             int x=3; 
 7             System.out.println(waibu.this.x);
 8             System.out.println(this.x);
 9             System.out.println(x);
10         }
11     }        
12 }
13 public class object {
14     public static void main(String[] args) {
15         waibu.neibu wn=new waibu().new neibu(); //直接访问内部类的方法
16         wn.method();
17     }
18 }
View Code

结果:1 2 3

  注意:之所以内部类可以直接访问内部类是因为在x前面省略了waibu.this

  2.外部类要访问内部类中的成员必须建立内部类的对象 

 1 class waibu{
 2     class neibu{  
 3         int x=2;  //内部类成员变量
 4     }
 5         void method(){  //外部类方法
 6             neibu n=new neibu();  //建立内部类对象
 7             System.out.println(n.x);
 8         }
 9 }
10 public class object {
11     public static void main(String[] args) {
12         waibu wb=new waibu();
13         wb.method();
14     }
15 }
View Code
结果:2
  思路详解:
  1. 先建立waibu类对象,调用本类中的methon方法
  2. 在methon方法中new一个内部类对象,直接输出内部类成员变量x(外部类要访问内部类中的成员必须建立内部类对象)
posted @ 2016-05-24 16:24  花花妹子。  阅读(118)  评论(0)    收藏  举报