使用构造器时需要记住:

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

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

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

4.构造器没有返回值

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

 


构造方法: 语法       

public 类名(){} 


 

解决:参数名和 属性名 相同  

 修改参数名(不推荐)

使用this关键字       

   this:  关键字

     1、指代当前对象     

              2、指代当前类     *

              3、 指代构造方法 this():   表示当前类的构造方法,只能放在首行

注意: 在新建对象的时候 实际上调用了类的无参(没有参数)的构造方法一般默认 (在类中可以隐藏)


示例1:
 public class Student {
 // 成员变量
private String name;     
private int age;
//无参构造
 public Student(String name, int age) {      
   this.name = name;       
//有参构造
示例2:
A.java
 
1. public class A{  
2.    public A(){  
3.       System.out.println("调用了无参的构造函数");  
4.    }  
5.    public A(String mess){  
6.       System.out.println("调用了有参的构造函数\n"+  
7.          "参数内容为:"+mess);  
8.    }  
9. }  
 
 Test.java
 
 
1. public class Test{  
2.    public static void main(String [] args){  
3.        A a_1=new A();//调用无参的构造函数  
4.        A a_2=new A("Hello");//调用有参的构造函数  
5.    }  
6. }  
 
 输出结果:调用了无参的构造函数
                   调用了有参的构造函数
                   参数内容为:Hello

继承与构造函数

super关键字

  1. 只能指代父类对象
  2. 指代父类的构造方法,只能放在首行

注意

  1. 子类必须通过super关键字调用父类有参数的构造函数
  2. 使用super调用父类构造器的语句必须是子类构造器的第一条语句

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