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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张会文 于 2012-12-31 19:26 编辑

大家帮我看看这段程序那里不对,为什么调试不出来?
要实现这个
package excrise;
class Test1 {
int a=10;
}
class Test extends Test1{
      
        void t (int a){
   System.out.println(a);
   System.out.println(this.a);
   System.out.println(super.a);
  }
        public void main (String[]args){
      Test1 s=new Test1();
         int a=50;
         s.t(a);
     
      
     }
   
}

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

9 个回复

倒序浏览
你的输出结果是50 10 10
  void t (int a){
   System.out.println(a);
   System.out.println(this.a);
   System.out.println(super.a);
  }
第一个a是参数里的局部变量,第二个a是当前引用指向对象的成员变量,由于没有定义所以输出父类的a,第三个a就是父类引用指向对象的成员变量a

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
晕死, 你的代码乱的有一笔。先会打字再学编程吧。
回复 使用道具 举报
1.  你的主函数写错了,没有static
2.你new了个Test1,按照题意,也错了,你应该new他的子类Test,才能达到你的效果。
3.你的Test类少了一个属性 int a =20;吧
3.如果你前面3个改好了,那你的结果是:50 20 10 当然每个数字打印后都会换行。
4.其实这个a什么的,如果你不指定this,或者super的话,就是最近那个,也就是局部变量,指定了this就是这个对象的,如果自己没有也就是父类的,super直接就是父类的,不找自己的。

点评

谢谢你哥们儿!如果要是按照图片的意思写这个代码我的对不对?我只是想要实现那个代码、  发表于 2012-12-30 13:24

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
楼主代码写错了,你写的是父类调用子类方法了 ,应该这么写
Test s=new Test();
         int a=50;
         s.t(a);
结过是50 ,10,,10

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
楼主你主函数里面建立的S是父类对象吖...这样怎么调用都是super吧..
回复 使用道具 举报
{:soso_e179:}{:soso_e179:}
回复 使用道具 举报
xieyi17569 发表于 2012-12-30 00:23
你的输出结果是50 10 10
  void t (int a){
   System.out.println(a);

可是我的为什么提示s.t(a)的地方错误呢?还有就是this.a不应该是和a(50)相同吗?

点评

因为你new的s是父类, 系统在父类中没有找到t()这个方法.  发表于 2012-12-30 14:13
回复 使用道具 举报
本帖最后由 dustookk 于 2012-12-30 15:48 编辑
张会文 发表于 2012-12-30 13:19
可是我的为什么提示s.t(a)的地方错误呢?还有就是this.a不应该是和a(50)相同吗? ...

你的意思是不是
  1. class Test {
  2.     int a = 10;
  3. }

  4. public class TinyTest extends Test {

  5.     /**
  6.      * @param 黑马程序员
  7.      * @author 高一航
  8.      */
  9.     int a=20; // this.a 输出的是这个a,this是本类的意思
  10.    
  11.     public void t(int a) {
  12.         System.out.println(a); //这个肯定是上面一行传入的参数那个a,输出肯定是50.
  13.         System.out.println(this.a); //这个是第13行定义的a ,输出肯定是20, 建议你看看黑马视频里this关键字那一章.
  14.         System.out.println(super.a); // 父类的a输出肯定是10
  15.     }

  16.     public static void main(String[] args) {
  17.         TinyTest s = new TinyTest();
  18.         int a = 50;
  19.         s.t(a);
  20.     }

  21. }
复制代码

点评

呵呵,差不多了。  发表于 2012-12-30 14:19

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
dustookk 发表于 2012-12-30 14:15
你的意思是不是

笔者的这个代码注释是不是刚好写反。
运行结果:
50
20
10

点评

是... 注释写反了 呵呵  发表于 2012-12-30 15:48
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马