黑马程序员技术交流社区

标题: 在静态的main()方法中通过创建的对象调用非静态的方法怎么还会出错? [打印本页]

作者: 黑马老兵    时间: 2012-4-10 11:38
标题: 在静态的main()方法中通过创建的对象调用非静态的方法怎么还会出错?
  1. class  Fu
  2. {
  3.         public int a;
  4.         public int b;
  5.         public void Fu(){
  6.                         System.out.println("a"+a);
  7.                         System.out.println("b*****"+b);
  8.         }
  9. }       
  10. class Zi1 extends Fu
  11. {
  12.         public int a = 10;
  13.         public int b = 12;
  14.         public void Zi1(){
  15.                         System.out.println("a------"+a);
  16.                         System.out.println(" b------"+b);
  17.         }
  18.         public static void main(String [] args){

  19.                         new Zi1();
  20.                         Zi1.Zi1();
  21.        
  22.         }
  23. }
复制代码
代码如下:

作者: 贠(yun)靖    时间: 2012-4-10 11:46
new Zi1();

Zi1.Zi1();    你这Zi1  到底是想用类名调用呢 还是对象呢?  对象new了 个匿名的 不直接调用  方法  又用类名调用  
      要么 new Zi1().Zi1()    还有 就是尽量不要把方法名首字母也大写    你这方法名和类名完全一样 阅读性极差
     要么 就不Zi1 方法搞成静态的  用类名可以直接调用  直接调用方法名也行


作者: 未长法    时间: 2012-4-10 11:50
子类和父类中方法中,方法名和构造函数一样,因此会出错。因此可以改一下父类和子类的方法名,不能和构造函数相同。
作者: 黑马老兵    时间: 2012-4-10 12:01
贠(yun)靖 发表于 2012-4-10 11:46
new Zi1();

Zi1.Zi1();    你这Zi1  到底是想用类名调用呢 还是对象呢?  对象new了 个匿名的 不直接调用 ...

:dizzy:敲了一上午。敲晕了都,Zi1是构造函数。。。
作者: 黑马老兵    时间: 2012-4-10 12:03
贠(yun)靖 发表于 2012-4-10 11:46
new Zi1();

Zi1.Zi1();    你这Zi1  到底是想用类名调用呢 还是对象呢?  对象new了 个匿名的 不直接调用 ...

本来想用这句new Zi1();创建一个对象让程序输出  a 和b 的值,结果编译通过了,运行时没有结果。。。
作者: 黑马老兵    时间: 2012-4-10 12:43
又犯迷糊了,构造函数不需要定义返回值类型。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2