构造函数 是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值 
总与new运算符一起使用在创建对象的语句中 特别的一个类可以有多个构造函数 可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载
构造函数与其他方法的区别 
1.构造函数的命名必须和类名完全相同;而一般方法则不能和类名相同.
2.构造函数的功能主要用于在类的对象创建时定义初始化的状态.它没有返回值,也不能用void来修饰.这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择.而其他方法都有返回值.即使是void返回值,尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的.
3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用,一般方法在程序执行到它的时候被调用.
4.当定义一个类定义的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略不去Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的.而一般方法不存在这一特点


补充:
构造函数的名字必须与类名相同,而且不可以有返回值,也不能有return 语句。
构造函数往往执行一些初始化的操作。

构造函数是类的一个特殊方法,这个方法用来生成实例时由系统自动调用,程序员无法直接调用。构造函数方法名同类名相同且参数为空。子类继承父类后默认继承父类的构造函数,即:子类存在隐含方法:super(),如果子类重写构造函数则子类也隐含调用super()。
如下例:
 
例一:
package sample;
public class A{
 A(){
 System.out.println("主类构造函数调用");
 }
 public static void main(String args[]){
  A g=new A();  
  subA s=new subA();  
 }
  
}
class subA extends A{
 
}
执行结果为:
主类构造函数调用
主类构造函数调用
本例中子类subA中没有任何方法,所以隐含调用super(),super()指向A()。
例二:
package sample;
public class A{
 A(){
 System.out.println("主类构造函数调用");
 }
 public static void main(String args[]){
  A g=new A();  
  subA s=new subA();  
 }
  
}
class subA extends A{
 public subA(){
 }
}
执行结果为:
主类构造函数调用
主类构造函数调用
本例中子类subA只有一个空方法suba()中没有任何方法,所以也隐含调用super(),super()指向A()。
例三:
package sample;
public class A{
 A(){
 System.out.println("主类构造函数调用");
 }
 public static void main(String args[]){
  A g=new A();  
  subA s=new subA();  
 }
  
}
class subA extends A{
 public subA(){
  System.out.println("子类构造函数调用");
 }
}
执行结果为:
主类构造函数调用
主类构造函数调用
子类构造函数调用
本例中子类subA的方法subA()虽然后输出但同上例中相同都为构造函数,所以也隐含调用super(),super()指向A()。