A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wy_heima 中级黑马   /  2014-5-20 10:56  /  1084 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wy_heima 于 2014-5-21 12:11 编辑
  1. //在打印语句中如何打印这3个x变量?
  2. class A {
  3.         int x = 1;
  4.         
  5.         class B {
  6.                
  7.                 int x = 2;
  8.                         
  9.                 void func() {
  10.                                 
  11.                         int x = 3;
  12.                         System.out.println(?);
  13.                 }
  14.         }
  15. }
复制代码

3 个回复

倒序浏览

你的代码很不规范啊!!
  1. class A
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                
  6.                 int x = 1;
  7.                 System.out.println("第一个x: "+x);
  8.                 B b =new B();
  9.                 b.func();
  10.         }
  11.         static class B
  12.         {
  13.                 B()
  14.                 {
  15.                         int x =2;
  16.                         System.out.println("第二个x:"+x);
  17.                 }
  18.                
  19.                 public void func()
  20.                 {
  21.                         int x =3;
  22.                         System.out.println("第三个x:"+x);
  23.                 }
  24.         }
  25. }
复制代码


回复 使用道具 举报
如果你想在内部类的方法访问属性是这个样子的,如有问题,欢迎指正!
  1. class A{
  2.        
  3.         int x = 1;
  4.         class B{
  5.                 int x = 2;
  6.                 void fun(){
  7.                         int x = 3;
  8.                        
  9.                         //1.这个表示访问A类对象的 x 属性
  10.                         System.out.println(A.this.x);
  11.                        
  12.                         //2.这个表示为访问B类对象的 x属性,也可写成 this.x。代表当前对象的属性。
  13.                         System.out.println(B.this.x);
  14.                        
  15.                         //3.属性访问具有"就近原则",如果方法中有,就不会去方法外找。如果方法外没有就会去类中找
  16.                         //  如果内部类中没有,就去外部类中找.
  17.                         System.out.print(x);
  18.                 }
  19.                
  20.         }
  21. }
  22. public class InnerDemo {
  23.         public static void main(String[] args) {
  24.                 //实例化外部类的格式——  外部类.内部类   对象  = new 外部类.new.内部类;
  25.                 A.B b = new A().new B();
  26.                 b.fun();
  27.                
  28.         }
  29.                
  30. }
复制代码

回复 使用道具 举报
  1. package com.itheima;
  2. class A {
  3.     int x = 1;
  4.    
  5.     class B {
  6.             
  7.             int x = 2;
  8.                     
  9.             void func() {
  10.                            
  11.                     int x = 3;
  12.                     //对于func中x,直接使用x,对class B中x可以是用this.x,因为func所在的当前对象this是B,
  13.                     //对于A中的x,可以用A.this.x表示this指向的是A
  14.                     System.out.println(x + " " + this.x + " " + A.this.x);
  15.             }
  16.     }
  17. }
  18. public class PrintTTT {
  19.        
  20.         public static void main(String[] args) {
  21.                 //调用内部类的方法,需要创建内部类的对象
  22.                 new A().new B().func();
  23.         }

  24. }
复制代码


回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马