黑马程序员技术交流社区

标题: 求大神帮忙解释一下,我下面这段代码最后一句为什么是... [打印本页]

作者: coolzhou9527    时间: 2015-3-12 20:02
标题: 求大神帮忙解释一下,我下面这段代码最后一句为什么是...
本帖最后由 coolzhou9527 于 2015-3-12 20:04 编辑

求大神帮忙解释一下,我下面这段代码最后一句为什么是错的,
  1. class Fu
  2. {
  3.         Fu()
  4.         {
  5.                 System.out.println("fu run");
  6.         }
  7. }

  8. class Zi extends Fu
  9. {
  10.         Zi()
  11.         {
  12.                 System.out.println("zi run");
  13.         }
  14. }


  15. class  ExtendsDemo4
  16. {
  17.         public static void main(String[] args)
  18.         {
  19.                 Zi z = new Zi();
  20.                 z.Zi();//这句为什么有问题
  21.         }
  22. }
复制代码
不吝赐教。。。



作者: 李忠兵    时间: 2015-3-12 20:40
构造函数不能被直接调用,且没有返回值类型,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;
作者: zsz3278440    时间: 2015-3-12 21:29
最后一句根本不需要写了,你new Zi了以后,构造函数已经自动初始化了
作者: Zoe-    时间: 2015-3-12 22:24
以前我也犯过这样的错误,以为有括号的都是方法都能够被调用,后来认真看了下视频才知道这个是构造方法,是在当前类初始化的时候被调用的。
作者: Sou男人    时间: 2015-3-12 22:37
这里是你的zi类对象调用类zi类的默认构造方法,因为zi类的默认构造方法是保护类型的,只有自己或者子类可以调用,这里在其他类中调用,是访问不到这个方法的
作者: 殷俊    时间: 2015-3-12 22:42
构造函数是初始化用的,所以你不能调用zi进行打印输出,如果不是构造函数,那你继承那里,
Zi()
        {
                System.out.println("zi run");
        }
这里应该是void Zi()
{
                System.out.println("zi run");
        }
作者: android-liu    时间: 2015-3-12 22:55
构造函数和一般函数不同,不能直接调用,要new  
作者: coolzhou9527    时间: 2015-3-12 23:49
李忠兵 发表于 2015-3-12 20:40
构造函数不能被直接调用,且没有返回值类型,必须通过new运算符在创建对象时才会自动调用;而一般的方法是 ...

我是想用new 建一个z的对象,然后再调用Zi()这个构造函数的
作者: Rorine    时间: 2015-3-12 23:57
构造方法怎么能被自己调用呢,它有两个特点,一名字跟类名一样,二只有在类初始化的时候会被调用
作者: bipanfei    时间: 2015-3-13 00:03
因为new了对象之后,构造函数已经运行了
作者: 李忠兵    时间: 2015-3-13 12:39
coolzhou9527 发表于 2015-3-12 23:49
我是想用new 建一个z的对象,然后再调用Zi()这个构造函数的

目的是什么?创建对象?没有意义啊
作者: yangruijing    时间: 2015-3-13 13:58
在创建对象时就是调用的构造函数
作者: 无辜被杀害    时间: 2015-3-13 14:27
coolzhou9527 发表于 2015-3-12 23:49
我是想用new 建一个z的对象,然后再调用Zi()这个构造函数的

你z就是一个Zi类型的对象;Zi z = new Zi();实例化了一个Zi的对象z;




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