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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 竹叶君子 中级黑马   /  2015-3-4 12:18  /  1755 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 竹叶君子 于 2015-3-4 12:24 编辑
  1. class Person
  2.     {
  3.     String  name;
  4.     public  Person(String name)   //构造方法不用定义返回值类型。
  5.        {
  6.               this.name=name;
  7.        }
  8.    public void speak() //函数中有访问非静态数据的语句,所以不能定义成静态的方法  
  9.       {
  10.         System.out.println("Hello!"+name);  //name为非静态成员
  11.       }
  12.     }
  13.       class Test
  14.     {
  15.    public static void main(String[] args)
  16.      {
  17.    <span style="line-height: 2.2em;">       </span><span style="line-height: 2.2em;">Person p =new Person("zhangsan");  //创建对象</span>
复制代码
上述代码中的构造方法不用定义返回值类型,但是加上void后,编译时会提示出错
public    void  Person(String name)   //加上void后,编译时会提示出错,
       {
              this.name=name;
       }
错误提示如下: 这个错误是什么意思??

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1

查看全部评分

7 个回复

倒序浏览
F:\练习的代码\图片
回复 使用道具 举报
不好意思,刚才错误提示截图没有传上,下面是错误提示的内容:
Test.java:18: 错误: 无法将类 Person中的构造器 Person应用到给定类型;
             Person p =new Person("zhangsan");  //创建对象
                       ^
  需要: 没有参数
  找到: String
  原因: 实际参数列表和形式参数列表长度不同
1 个错误
回复 使用道具 举报
说一下哈,首先  说的小问题,在你自己定义构造方法后,最好手动加上空构造,Person();方便使用。
接下来说你的问题,构造方法是不能返回值类型,它可以有权限修饰符,但是不能有返回值类型。viod也是算是一种返回值类型。
回复 使用道具 举报
本帖最后由 wdhm5423 于 2015-3-4 12:41 编辑
  1. class Person {
  2.         String name;

  3.         public void Person(String name) //非构造方法
  4.         {
  5.                 this.name = name;
  6.         }
  7.         public Person(String name) // 构造方法不用定义返回值类型。
  8.         {
  9.                 this.name = name;
  10.         }

  11.         public void speak() // 函数中有访问非静态数据的语句,所以不能定义成静态的方法
  12.         {
  13.                 System.out.println("Hello!" + name); // name为非静态成员
  14.         }
  15. }

  16. class Demo {
  17.         public static void main(String[] args) {
  18.                 Person p = new Person("zhangsan"); // 创建对象</span>
  19.                 p.Person("az");
  20.         }
  21. }
复制代码

加了void就是普通函数了,可以被调用,不是构造函数。改成上面的就正常了。你上面提示的错误是,参数不能传给无参构造。
回复 使用道具 举报
构造器 又称为构造方法 ,constructor
构造器用于构造该类的实例。作用:用来初始化对象!
代码:
    [修饰符]  类名 (形式参数列表){
         //语句
     }
是一种特殊的方法:
(1)通过new关键字调用!!
(2)构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类),不能再构造器里调用 return。
(3)如果我们没有定义构造器,则系统会自动定义一个无参数的构造函数,如果已经定义则编译器不会添加,覆盖了系统默认的构造方法。
(4)构造器的方法名必须和类名一致。
(5) 构造该类的对象,经常用来初始化对象的属性。

1.构造方法必须与类名保持一致,
2.无返回类型
3.通过new来调用
在你的代码中,对构造函数添加了返回值类型以后,就相当于定义了一个名称为Person的普通函数,此函数要用类的实例化对象调用
即:new Person().Person("");

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报
一句话:构造函数不能有返回值
回复 使用道具 举报
构造函数格式是固定的。你加了返回值类型,就不是构造函数了,只是一般函数..
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马