A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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();
        }
}

13 个回复

倒序浏览
本帖最后由 万正 于 2012-3-14 08:45 编辑

AA类的构造函数应该是
AA(String name)
        {
                this.name=name;
        }
构造函数的特点:
1.函数名与类名相同
2.不用定义返回值类型
3.不可以写return语句
回复 使用道具 举报
  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:55
板凳
本帖最后由 崔岩 于 2012-3-14 08:52 编辑

构造函数写法问题。
回复 使用道具 举报
public void AA(String name)
        {
                this.name=name;
        }
这个构造方法改为:
public AA(String name)
        {
                this.name=name;
        }
把void去掉。
回复 使用道具 举报
黄奇耀 发表于 2012-3-14 09:07
public void AA(String name)
        {
                this.name=name;

谢谢!
是不是构造函数不能加void啊?
回复 使用道具 举报
李哲 中级黑马 2012-3-14 09:14:27
7#
以前学的,都忘了,不好意思,谢谢大家。
回复 使用道具 举报
djx900 黑马帝 2012-3-14 09:15:48
8#
构造函数 就是类名 +(){}  
回复 使用道具 举报
蒋安国 黑马帝 2012-3-14 09:18:31
9#
构造函数的特点:函数名与类名相同,包括大小写;不用定义返回值类型;不可以写return语句。
所以将类AA前面的void去掉,因为void也是返回值类型的一种。
回复 使用道具 举报
李哲 发表于 2012-3-14 09:12
谢谢!
是不是构造函数不能加void啊?

构造方法里面是没有void的。
回复 使用道具 举报
OMG 中级黑马 2012-3-14 09:50:03
11#
哥们,如何建立属性?(成员变量)!如何建立对象?(构造函数)!如何给对象赋予功能?(成员函数)
成员函数是做事情的,必须强调结果类型,也就是返回值类型;而构造函数用于new对象,结果已经明确,那就是出现了类的实例对象,所以是不需要明确结果的。从分析结果来理解和区分构造函数和一般函数,希望能帮到你!
回复 使用道具 举报
魏昂 黑马帝 2012-3-14 09:58:53
12#
我 在电脑上运行了一下在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:17
13#
下面是在百度百科中找到的 希望对你能有所帮助
构造方法  
在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);  
 }   }
回复 使用道具 举报
嗯,学到了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马