java中的构造函数

来源:互联网 发布:淘宝退货售后卡填什么 编辑:程序博客网 时间:2024/06/06 22:19

使用构造器时需要记住:

1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)

2.每个类可以有一个以上的构造器

3.构造器可以有0个、1个或1个以上的参数

4.构造器没有返回值,因为构造对象,创建完就结束,需要结果。void也不要写,因为要有区别与一般函数。

5.构造器总是伴随着new操作一起调用

6.多个构造函数是以重载的形式存在的。

需求:为了描述事物更准确,发现事物对应的很多对象一创建时,
就有了,一些初始化的数据。在类中该如何完成的。

通过Java中的另一个小技术完成:就是构造函数。对象本身就是构造出来,
构造时,需要做一些动作这些应该定义在函数内。
构造函数(Constructor)有什么用?可以对对象创建进行初始化。
类中有定义该构造函数吗?有的。只要定义一个类,
该类中默认就有一个空参数的构造函数,是编译器编译时添加到class文件中。
注意:如果在类中自定义了构造函数,那么默认的空参数构造函数编译器就不添加了。
原理:没有定义对象的初始化过程,编译器会添加一个默认的初始化过程。
如果定义了指定的对象初始化过程,默认的就不添加了。

构造函数的细节:
1,一个类中可以有多个构造函数,它们的存在是以重载的形式体现的。
2,构造函数中也是有return语句的,用于结束初始化动作的。
3,构造函数是否能被private修饰呢?能,作用:其他程序无法创建该类的对象。

构造函数和一般函数的区别?
1,写法不一样。不重要。
2,运行上有差别,对象一创建就会调用对应的构造函数。
一般方法是对象创建后,才会调用所需的一般函数。
问:有了构造函数初始化姓名,那么还需要setName方法吗?
需要,因为对象创建后,如果需要对数据进行修改,可以通过set完成。
3,构造函数在对象创建时,仅调用一次(初始化动作只做一次,而且先执行)。一般方法可以被对象调用多次。
示例:
A.java
        public class A{        public A(){          System.out.println("调用了无参的构造函数");      }      public A(String mess){        System.out.println("调用了有参的构造函数\n"+           "参数内容为:"+mess);      }    }  

Test.java
public class Test{     public static void main(String [] args){         A a_1=new A();//调用无参的构造函数         A a_2=new A("Hello");//调用有参的构造函数     }  }  

输出结果:

继承与构造函数

 

使用super调用父类构造器的语句必须是子类构造器的第一条语句

如果子类构造器没有显式地调用父类的构造器,则将自动调用父类的默认(没有参数)的构造器。如果父类没有不带参数的构造器,并且在子类的构造器中又没有显式地调用父类的构造器,则java编译器将报告错误

示例:

A.java

public class A{     public A(){        System.out.println("调用了A的无参构造函数");     }     public A(String mess){        System.out.println("调用了A的有参的构造函数\n"+           "参数内容为:"+mess);     }  }  


B.java
public class B extends A{     public B(){        System.out.println("调用了B的无参构造函数");     }     public B(String mess){        super(mess);        System.out.println("调用了B的有参构造函数\n"+           "参数内容为:"+mess);     }  }  


Test.java
public class Test{     public static void main(String [] args){         B b_01=new B();         B b_02=new B("你好");     }  }  


输出结果:



1 0
原创粉丝点击