黑马程序员技术交流社区
标题:
构造函数的返回值类型
[打印本页]
作者:
竹叶君子
时间:
2015-3-4 12:18
标题:
构造函数的返回值类型
本帖最后由 竹叶君子 于 2015-3-4 12:24 编辑
class Person
{
String name;
public Person(String name) //构造方法不用定义返回值类型。
{
this.name=name;
}
public void speak() //函数中有访问非静态数据的语句,所以不能定义成静态的方法
{
System.out.println("Hello!"+name); //name为非静态成员
}
}
class Test
{
public static void main(String[] args)
{
<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;
}
错误提示如下:
构造方法相关编译图片.jpg
(46.09 KB, 下载次数: 5)
下载附件
2015-3-4 12:24 上传
这个错误是什么意思??
作者:
竹叶君子
时间:
2015-3-4 12:19
F:\练习的代码\图片
作者:
竹叶君子
时间:
2015-3-4 12:21
不好意思,刚才错误提示截图没有传上,下面是错误提示的内容:
Test.java:18: 错误: 无法将类 Person中的构造器 Person应用到给定类型;
Person p =new Person("zhangsan"); //创建对象
^
需要: 没有参数
找到: String
原因: 实际参数列表和形式参数列表长度不同
1 个错误
作者:
夏季熬成了秋
时间:
2015-3-4 12:33
说一下哈,首先 说的小问题,在你自己定义构造方法后,最好手动加上空构造,Person();方便使用。
接下来说你的问题,构造方法是不能返回值类型,它可以有权限修饰符,但是不能有返回值类型。viod也是算是一种返回值类型。
作者:
wdhm5423
时间:
2015-3-4 12:38
本帖最后由 wdhm5423 于 2015-3-4 12:41 编辑
class Person {
String name;
public void Person(String name) //非构造方法
{
this.name = name;
}
public Person(String name) // 构造方法不用定义返回值类型。
{
this.name = name;
}
public void speak() // 函数中有访问非静态数据的语句,所以不能定义成静态的方法
{
System.out.println("Hello!" + name); // name为非静态成员
}
}
class Demo {
public static void main(String[] args) {
Person p = new Person("zhangsan"); // 创建对象</span>
p.Person("az");
}
}
复制代码
加了void就是普通函数了,可以被调用,不是构造函数。改成上面的就正常了。你上面提示的错误是,参数不能传给无参构造。
作者:
yangruijing
时间:
2015-3-4 13:04
构造器 又称为构造方法 ,constructor
构造器用于构造该类的实例。作用:用来初始化对象!
代码:
[修饰符] 类名 (形式参数列表){
//语句
}
是一种特殊的方法:
(1)通过new关键字调用!!
(2)构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类),不能再构造器里调用 return。
(3)如果我们没有定义构造器,则系统会自动定义一个无参数的构造函数,如果已经定义则编译器不会添加,覆盖了系统默认的构造方法。
(4)构造器的方法名必须和类名一致。
(5) 构造该类的对象,经常用来初始化对象的属性。
1.构造方法必须与类名保持一致,
2.无返回类型
3.通过new来调用
在你的代码中,对构造函数添加了返回值类型以后,就相当于定义了一个名称为Person的普通函数,此函数要用类的实例化对象调用
即:new Person().Person("");
作者:
lwj123
时间:
2015-3-4 13:07
一句话:构造函数不能有返回值
作者:
zfgrinm
时间:
2015-3-4 14:21
构造函数格式是固定的。你加了返回值类型,就不是构造函数了,只是一般函数..
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2