黑马程序员技术交流社区

标题: 找不着符号 构造函数 [打印本页]

作者: 王渠    时间: 2012-5-4 12:48
标题: 找不着符号 构造函数
本帖最后由 王渠 于 2012-5-4 12:54 编辑
  1. public class Account {
  2.         private int id;
  3.         private String name;
  4.         private int balance;
  5.         public void Account(){}
  6.         public void Account (String name,int id,int balance)
  7.         {
  8.                 this.id =  id;
  9.                 this.name = name;
  10.                 this.balance = balance;
  11.         }
  12.          void withdraw(int money)
  13.         {
  14.                 balance += money;
  15.         }
  16.          void deppsit(int money)
  17.         {
  18.                 balance -=money;
  19.         }
  20.         public void Balance()
  21.         {
  22.                 System.out.println("当前余额为"+balance);
  23.         }
  24. }
复制代码
  1. public class Test {
  2.         
  3.         public static void main (String args[]) {
  4.                 //Account p = new Account ();
  5.                 Account p = new Account ("刘玉",1105,20000);
  6.                 p.deppsit(2500);
  7.                 p.withdraw(30000);
  8.                 p.Balance();
  9.         }
  10. }
复制代码
有空的构造函数,但是就是会提示好不到符号,构造函数,Account
作者: 符云爵    时间: 2012-5-4 12:56
构造函数也需要返回值?
public void Account(){}
public void Account (String name,int id,int balance)
{
                this.id =  id;
                this.name = name;
                this.balance = balance;
}

两函数都去掉void
作者: 王渠    时间: 2012-5-4 12:58
符云爵 发表于 2012-5-4 12:56
构造函数也需要返回值?
public void Account(){}
public void Account (String name,int id,int balance)

恩,的确是不需要呢{:3_54:}果断是习惯看见函数就看是否有返回值了,没有就void....
作者: 魏涞    时间: 2012-5-4 13:02
lz在定义构造方法的时候加了返回类型,这样相当于定义了与类同名的成员方法,而不是定义的构造方法,构造方法的定义是不能加返回值类型的。去掉构造方法中的void就可以了。

作者: 崔仁军    时间: 2012-5-4 13:24
1   构造方法(Constructor ):构造方法用于完成对象属性的初始化工作,构造方法的特点:
    a  构造方法的名字必须与类名完全一致(包含大小写)
    b  构造方法没有返回值,连void 也不能出现。
    c  如果在定义一个类的时候,没有为类声明构造方法,那么 Java  编译器会自动为类添加一个没有参数且方法体为空的构造方法(默认的构造方法)
    d  如果在定义一个类的时候,为类声明了构造方法,那么 Java 编译器就不会再为类添加构造方法了。
    e  不能显式调用类的构造方法,构造方法通常是通过new 关键字隐式调用。
修改代码如下:

public class Account {

       private int id;

       private String name;

       private int balance;

      public  Account(){};

       public  Account (String name,int id,int balance)
         {

              this.id =  id;

              this.name = name;

              this.balance = balance;

       }
          void withdraw(int money)
         {
                balance += money;
        }
         void deppsit(int money)
       {
                balance -=money;
        }

       public void Balance()
         {
                System.out.println("当前余额为"+balance);
         }
}
public class Test {
           public static void main (String args[]) {
                Account p = new Account ();
               Account p = new Account ("刘玉",1105,20000);
                p.deppsit(2500);
               p.withdraw(30000);
               p.Balance();
         }
}


作者: 金肖    时间: 2012-5-4 14:17
楼主对构造的特点不是很清楚:
构造函数的特点:1,构造函数和类同名,没有返回值
                2,随着对象的创建而存储在堆内存中
                3,一个类中可以有多个接收不同参数的构造函数,以重载的形式存在,对象在一创建就会掉用与之对应的构造函数进行初始化。



楼主将一下这两个函数中的void去掉就可以了  
public void Account(){}
public void Account (String name,int id,int balance)








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