黑马程序员技术交流社区
标题:
关于构造函数的概念
[打印本页]
作者:
hg3093483
时间:
2013-3-19 11:39
标题:
关于构造函数的概念
小弟 再看毕向东老师的视频,讲到的面向对象时,在构造函数这里,感觉对这个名词的概念很模糊,哪位大神给讲一下 构造函数的具体 描述和实际当中的用法 呢??
作者:
郝强勇
时间:
2013-3-19 11:53
每创建一个类的实例都去初始化它的所有变量是乏味的。如果一个对象在被创建时就完成了所有的初始工作,将是简单的和简洁的。因此,Java在类里提供了一个特殊的成员函数,叫做构造函数(Constructor)。
一个构造函数是对象被创建时初始对象的成员函数。它具有和它所在的类完全一样的名字。一旦定义好一个构造函数,与new运算符一起使用,创建对象时就会自动调用它。构造函数没有返回类型,即使是void类型也没有。这是因为一个类的构造函数的返回值的类型就是这个类本身。构造函数的任务是初始化一个对象的内部状态,所以用new操作符创建一个实例后,立刻就会得到一个清楚、可用的对象。
作者:
郭利超
时间:
2013-3-19 11:59
一般我们讲的“函数”就是“方法”;
构造函数=构造方法;
构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
(5)构造方法可以重载,以参数的个数,类型,或排列顺序区分。
java 构造函数的执行过程
类初始化时构造函数调用顺序:
(1)初始化对象的存储空间为零或null值;
(2)调用父类构造函数;
(3)按顺序分别调用类成员变量和实例成员变量的初始化表达式;
class Dollar {
Money m = new Money();
Rmb r = new Rmb();
public Dollar() {
System.out.println("Dollar is construct!");
}
public static void main(String[] args) {
new Dollar();
}
}
class Money {
public Money() {
System.out.println("Money is construct!");
}
}
class Rmb {
public Rmb() {
System.out.println("RMB is construct!");
}
}
输出结果:
Money is construct
RMB is construct
Dollar is construct!
JAVA 与C#构造函数执行顺序的不同之处
public static void main(String[] args)
{
Child child = new Child();
}
}
class Parent
{
Parent()
{
System.out.println("to construct Parent.");
}
}
class Child extends Parent
{
Child()
{
System.out.println("to construct Child.");
}
Delegatee delegatee = new Delegatee();
}
class Delegatee
{
Delegatee()
{
System.out.println("to construct Delegatee.");
namespace ConsoleApplication1
{
public class Test
{
public static void Main(String[] args)
{
Child child = new Child();
}
}
class Parent
{
public Parent()
{
Console.WriteLine("to construct parent");
}
}
class{
public Child()
{
Console.WriteLine("to construct Child.");
}
Delegatee delegatee = new Delegatee();
}
class Delegatee
{
public Delegatee()
{
Console.WriteLine("to construct Delegatee.");
}
}
}
结果是
to construct Delegatee.
to construct Child.
to construct Parent.
使用构造器时需要记住:
1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)
2.每个类可以有一个以上的构造器
3.构造器可以有0个、1个或1个以上的参数
4.构造器没有返回值
5.构造器总是伴随着new操作一起调用
复制代码
作者:
牛虻
时间:
2013-3-19 12:10
以下个人见解,仅供参考 :
构造函数就是构造方法;最主要是作用就是实例化类的。
比如你写了一个Person类一样。这时他只是声明,你不能用。就好比我说“我让你去找个人。”你靠这句话是找不到我要找的人。
那 Person person=new Person(); 这里就是给Person实例化了。也就是你可以用person点出东西来了。
也就是说你要用这个类必须先把他构造出来才能用。
构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
(5)构造方法可以重载,以参数的个数,类型,或排列顺序区分。
java 构造函数的执行过程
类初始化时构造函数调用顺序:
(1)初始化对象的存储空间为零或null值;
(2)调用父类构造函数;
(3)按顺序分别调用类成员变量和实例成员变量的初始化表达式;
注意:
class Person{
Person();//这就是默认构造。当你类中没有构造方法时,系统会为你自动建一个。如果你有带参的构造方法如(Person(int age)),系统就不会建Person()这个默认构造。如果你调用时没写默认构造而又用调用默认构造的话会报错。
}
作者:
牛虻
时间:
2013-3-19 12:14
你记构造方法的特点和调用顺序就好了,到时候你再把方法重写,方法重载做下对比就好理解了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2