黑马程序员技术交流社区

标题: 无法编译通过,不知道问题在哪!请大家指教!着急! [打印本页]

作者: 李哲    时间: 2012-3-14 08:33
标题: 无法编译通过,不知道问题在哪!请大家指教!着急!
class AA implements Runnable
{
        private String name;
        public void AA(String name)
        {
                this.name=name;
        }
        public void run()
        {
                for (int i=0;i<100 ;i++ )
                {
                        System.out.println(this.name+"Hello World!");
                }       
        }
}



class James
{
        public static void main(String[] args)
        {
                AA a=new AA("one");
                AA b=new AA("two");
        Thread t1=new Thread(a);
        Thread t2=new Thread(b);
        t1.start();
        t2.start();
        }
}

作者: 万正    时间: 2012-3-14 08:40
本帖最后由 万正 于 2012-3-14 08:45 编辑

AA类的构造函数应该是
AA(String name)
        {
                this.name=name;
        }
构造函数的特点:
1.函数名与类名相同
2.不用定义返回值类型
3.不可以写return语句
作者: 王杰    时间: 2012-3-14 08:43
  1. class AA implements        Runnable
  2. {
  3.                  private String        name;
  4.                  public        AA(String name)//构造函数没有返回值!
  5.                  {
  6.                                  this.name=name;
  7.                  }
  8.                  public        void run()
  9.                  {
  10.                                  for (int i=0;i<100        ;i++ )
  11.                                  {
  12.                                                  System.out.println(this.name+"Hello World!");
  13.                                  }                  
  14.                 }
  15. }



  16. class James       
  17. {
  18.                  public        static void        main(String[] args)       
  19.                 {
  20.                                  AA        a=new AA("one");
  21.                                  AA        b=new AA("two");
  22.                  Thread        t1=new Thread(a);
  23.                  Thread        t2=new Thread(b);
  24.                  t1.start();
  25.                  t2.start();
  26.                  }
  27. }
复制代码

作者: 崔岩    时间: 2012-3-14 08:48
本帖最后由 崔岩 于 2012-3-14 08:52 编辑

构造函数写法问题。
作者: 黄奇耀    时间: 2012-3-14 09:07
public void AA(String name)
        {
                this.name=name;
        }
这个构造方法改为:
public AA(String name)
        {
                this.name=name;
        }
把void去掉。
作者: 李哲    时间: 2012-3-14 09:12
黄奇耀 发表于 2012-3-14 09:07
public void AA(String name)
        {
                this.name=name;

谢谢!
是不是构造函数不能加void啊?
作者: 李哲    时间: 2012-3-14 09:14
以前学的,都忘了,不好意思,谢谢大家。
作者: djx900    时间: 2012-3-14 09:15
构造函数 就是类名 +(){}  
作者: 蒋安国    时间: 2012-3-14 09:18
构造函数的特点:函数名与类名相同,包括大小写;不用定义返回值类型;不可以写return语句。
所以将类AA前面的void去掉,因为void也是返回值类型的一种。

作者: 黄奇耀    时间: 2012-3-14 09:27
李哲 发表于 2012-3-14 09:12
谢谢!
是不是构造函数不能加void啊?

构造方法里面是没有void的。
作者: OMG    时间: 2012-3-14 09:50
哥们,如何建立属性?(成员变量)!如何建立对象?(构造函数)!如何给对象赋予功能?(成员函数)
成员函数是做事情的,必须强调结果类型,也就是返回值类型;而构造函数用于new对象,结果已经明确,那就是出现了类的实例对象,所以是不需要明确结果的。从分析结果来理解和区分构造函数和一般函数,希望能帮到你!
作者: 魏昂    时间: 2012-3-14 09:58
我 在电脑上运行了一下在MyEclipse中提示是The constructor AA(String) is undefined也就是说构造方法不明确
有两种解决方法
第一种:是在public void AA(String name);
后面加一句
public AA(String string) {
                        // TODO Auto-generated constructor stub
                }
第二种是把
AA a=new AA("one");
AA b=new AA("two");
中的两个参数去掉。

作者: 魏昂    时间: 2012-3-14 10:04
下面是在百度百科中找到的 希望对你能有所帮助
构造方法  
在Java中,任何变量在被使用前都必须先设置初值.Java提供了为类的成员变量赋初值的专门功能:构造方法(constructor)构造方法是一种特殊的成员方法,它的特殊性反映在如下几个方面:  
1.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。   
2.构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。  
3.每个类可以有零个或多个构造方法.
4.不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承。   
5.构造方法在创建对象时自动执行,一般不能显式地直接调用.  
构造方法可以被重载。没有参数的构造方法称为默认构造方法,与一般的方法一样,构造方法可以进行任何活动,但是经常将他设计为进行各种初始化活动,比如初始化对象的属性。   
具体使用:分别计算长、宽为20、10和6、3的两个长方形的面积。  
 class RectConstructor{  
 double length;   double width;   double area()
{   return length*width;
  }  
 RectConstructor(double width,double length){//带参数的构造方法   this.length=length;   this.width=width;   }  
 }   
public class RectDemo{   
public static void main(String args[]) {  
 RectConstructor rect1=new RectConstructor(10,20);   
RectConstructor rect2=new RectConstructor(3,6);  
 double ar;   ar=rect1.area();  
 System.out.println("第一个长方形的面积是"+ar);  
 ar=rect2.area();   
System.out.println("第二个长方形的面积是"+ar);  
 }   }
作者: 张志阳    时间: 2012-3-14 10:29
嗯,学到了




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