黑马程序员技术交流社区
标题:
在静态的main()方法中通过创建的对象调用非静态的方法怎么还会出错?
[打印本页]
作者:
黑马老兵
时间:
2012-4-10 11:38
标题:
在静态的main()方法中通过创建的对象调用非静态的方法怎么还会出错?
class Fu
{
public int a;
public int b;
public void Fu(){
System.out.println("a"+a);
System.out.println("b*****"+b);
}
}
class Zi1 extends Fu
{
public int a = 10;
public int b = 12;
public void Zi1(){
System.out.println("a------"+a);
System.out.println(" b------"+b);
}
public static void main(String [] args){
new Zi1();
Zi1.Zi1();
}
}
复制代码
代码如下:
作者:
贠(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