黑马程序员技术交流社区
标题:
方法和构造函数只有这么一点区别吗?
[打印本页]
作者:
我能驾驭住
时间:
2012-5-24 09:39
标题:
方法和构造函数只有这么一点区别吗?
构造的函数的名字一定跟类名的名字是一样的.
比如
class B1
{ int i,j;
public B1(int i,int j) //这个是构造函数,主要用于对成员进行初始化
{
this.i=i;
this.j=j;
}
public void run()//这个是方法
{
System.out.println("这个是方法");
System.out.println("i="+i+"j="+j);
}
public static void main(String args[])
{
B1 b=new B1(2,3);//应该这样调用,不然会出错,因为构造函数要求带2个参数.
b.run();
}
}
这程序简单,但..
后面讲到集合和IO这些的时候,这东西就区别不了了,求解!
作者:
陆建平
时间:
2012-5-24 09:48
1.构造函数的命名必须和类名完全相同;在java中普通函数可以和构造函数同名,但是必须带有返回值。
2.构造函数的功能主要用于在类的对象创建时定义初始化的状态.它没有返回值,也不能用void来修饰.这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择.而其他方法都有返回值.即使是void返回值,尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的.
3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用,一般方法在程序执行到它的时候被调用.
4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的.而一般方法不存在这一特点
5当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象,当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数。
作者:
乔建国
时间:
2012-5-24 11:56
简单的说构造方法是用来实例化对象用的,构造方法一般用来给对象的属性做初始化的,构造方法没有返回值;
普通方法必须有返回值,就算不返回也得写个void,
普通方法是用 对象名.方法名 调用,如果是静态方法,就用 类名.方法名 调用。
任何类都有构造方法
作者:
马林贺
时间:
2012-5-24 12:08
我是这么理解构造函数的
构造函数: 是一件事物一创建就具备的信息,要在构造函数里面写。 比如: 人一生下来就必须会有性别。
方 法: 就理解成 事物通过后期的学习,具备了特有的方法。 比如: 通过学习编程,就会具备了 编程的方法。
作者:
黄克帅
时间:
2012-5-24 12:27
本帖最后由 黄克帅 于 2012-5-24 12:30 编辑
构造函数没有返回类型(void都不能有) 且必须与类名一样。普通方法必须有返回类型(void也算是一种特殊的情况)。
当你没有在类里面定义显示的构造方法的时候,系统会默认调用隐式的无参的构造方法。 当你定义了有参数的构造方法,又没有定义显示的无参数的构造方法的时候调用无参构造方法就会报错。这种情况想调用无参数的构造方法必须定义一个显式的无参数的构造方法。这两个构造方法就组成了构造方法的重载
作者:
李红飞
时间:
2012-5-24 13:27
class Person
{
private String name ;
private int age ;
/*
程序要提供一个无参的构造方法,此构造方法用于打印创建person对象的信息
程序要再提供一个设置姓名的方法,年龄的默认值为1,但此方法也要打印对象创建信息
程序要再再提供一个有两个参数的构造方法,用于设置姓名和年龄,但要求也打印对象创建信
息
*/
public Person()
{
System.out.println("** 创建了一个Person对象。") ;
}
public Person(String name)
{
// 调用本类中的无参构造方法
this() ;
this.setName(name) ;
this.setAge(1) ;
public Person(String name,int age)
{
this(name) ;
this.setAge(age) ;
}
public void setName(String name)
{
this.name = name ;
}
public void setAge(int age)
{
this.age = age ;
}
public int getAge()
{
return this.age ;
}
public String getName()
{
return this.name ;
}
};
public class OODemo16
{
public static void main(String args[])
{
Person per = new Person("张三",30) ;
}
};
注意:
构造方法本身必须在首行被调用。为了能够为类中的属性初始化
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2