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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王桂丽 中级黑马   /  2012-8-6 20:05  /  1470 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Fu//定义父类,父类里有一个成员变量num=5,还有一个静态方法method1,一个成员函数method2
{
int num=5;
static void method1()
{
  System.out.println("Fu method_1");
}
void method2()
{
  System.out.println("Fu method_2");
}
}
class Zi extends Fu//定义子类,父类里有一个成员变量num=8,还有一个静态方法method1,一个成员函数method2。并继承父类
{
int num=8;
static void method1()
{
  System.out.println("Zi method_1");
}
void method2()
{
  System.out.println("Zi method_2");
}
}
class  ExtendsDemo
{
public static void main(String[] args)
{
  Fu f=new Fu();//创建父类对象并调用起方法
  {
   System.out.println(f.num);//5
   System.out.println(f.method1);//Fu method_1
   System.out.println(f.method2);//Fu method_2
  }
  
  Fu z=new Zi();//建立子类对象并调用方法
  {
   System.out.println(f.num);//5
   System.out.println(f.method1);//Fu method_1
   System.out.println(f.method2);//Zi method_2
   System.out.println(z.num);//8
   System.out.println(z.method1);//Zi method_1
   System.out.println(z.method2);//Zi method_2
  }
}
}


疑问:1、运行通不过是代码哪里出的问题?
           2、代码在内存中是怎样体现的?

未命名.jpg (59.14 KB, 下载次数: 8)

未命名.jpg

4 个回复

倒序浏览
f.method1!!!!!!!!!!!!!!!!!!!
你调用的是方法!!!为啥不加()???
f.method1()
这样就对了!!
还有就是System.out.println()里边不能加方法。直接写到main函数里就行了。
回复 使用道具 举报
  1. package cn.forum0806;

  2. class Fu//定义父类,父类里有一个成员变量num=5,还有一个静态方法method1,一个成员函数method2
  3. {
  4.         int num=5;
  5.         static void method1()
  6.         {
  7.           System.out.println("Fu method_1");
  8.         }
  9.         void method2()
  10.         {
  11.           System.out.println("Fu method_2");
  12.         }
  13. }
  14. class Zi extends Fu//定义子类,父类里有一个成员变量num=8,还有一个静态方法method1,一个成员函数method2。并继承父类
  15. {
  16.         int num=8;

  17.         static void method1()
  18.         {
  19.           System.out.println("Zi method_1");
  20.         }
  21.         //子类定义的方法名,参数和返回值都与父类完全相同,
  22.        
  23.         @Override
  24.         void method2()
  25.         {
  26.           System.out.println("Zi method_2");
  27.         }
  28. }
  29. class  ExtendsDemo
  30. {
  31.         public static void main(String[] args)
  32.         {
  33.                   Fu f=new Fu();//创建父类对象并调用起方法
  34.                   {
  35.                    System.out.println(f.num);//5
  36.                    //System.out.println(f.method1);//Fu method_1
  37.                   // method1()是方法,并且返回值是void.
  38.                    f.method1();
  39.                    Fu.method1();
  40.                    //System.out.println(f.method2);//Fu method_2
  41.                    f.method2();
  42.                   }
  43.                   
  44.                   Fu z=new Zi();//建立子类对象并调用方法
  45.                   {
  46.                           //定义的方法返回值都是void,不能直接调用println();
  47.                    System.out.println(f.num);//5
  48.                    //System.out.println(f.method1);//Fu method_1
  49.                    f.method1();
  50.                    //System.out.println(f.method2);//Zi method_2
  51.                    f.method2();
  52.                    System.out.println(z.num);//8
  53.                    //System.out.println(z.method1);//Zi method_1
  54.                    z.method1();
  55.                   
  56.                 //  System.out.println(z.method2);//Zi method_2
  57.                    z.method2();
  58.                   }
  59.         }
  60. }


复制代码
这些错误,楼主把代码放到编译器里就可以看到的。
回复 使用道具 举报
  1. public class ExtendsDemo {

  2. /**
  3. * @param args
  4. */
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. Fu f=new Fu();//创建父类对象并调用起方法
  8. // {
  9. System.out.println(f.num);//5
  10. // System.out.println(f.method1);//Fu method_1,这里会报一个错误,无法解析f.method1,或他不是字段。其实就是输出语句里面不能放置方法调用
  11. // System.out.println(f.method2);//Fu method_2,这里会报一个错误,无法解析f.method1,或他不是字段。与上面一样的问题
  12. // }
  13. //因为你的Fu类和Zi类定义的方法里面都有输出语句,所以直接进行方法调用就可以了。
  14. f.method1();
  15. f.method2();
  16. Fu z=new Zi();//建立子类对象并调用方法
  17. // {
  18. System.out.println(f.num);//5
  19. // System.out.println(f.method1);//Fu method_1,这里的错误与上面是一样
  20. // System.out.println(f.method2);//Zi method_2,这里的错误与上面是一样
  21. System.out.println(z.num);//8
  22. // System.out.println(z.method1);//Zi method_1,这里的错误与上面是一样
  23. // System.out.println(z.method2);//Zi method_2,这里的错误与上面是一样
  24. // }
  25. //因为你的Fu类和Zi类定义的方法里面都有输出语句,所以直接进行方法调用就可以了。
  26. z.method1();
  27. z.method2();
  28. }

  29. }


复制代码
System.out.println(f.method1);你这里面应该是f.method1(),但是这样也不对,因为输出语句里面不能放置方法调用,会直接报错。
因为你的Fu类和Zi类定义的方法里面都有输出语句,所以直接进行方法调用就可以了。
回复 使用道具 举报
此问题已解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马