您的位置:首页 > 编程语言 > Java开发

Java学习篇之--构造函数心得分享

2015-03-24 09:29 381 查看

构造函数篇

源代码:

package com.ryze.struct.test;

public class Struct {
public static int i = 0;
public static void main(String[] args) {
A a1 = new A();
A a2 = new A("瑞兹","啦啦啦德玛西亚");
B b1 = new B();
B b2 = new B("法师","男");
}

}

class A{

String userName;
String passWord;
public A(){
System.out.println("A的无参构造函数第"+Struct.i+"次调用"+"\n");
Struct.i++;
}

public A(String name,String pword){
this.userName = name;
this.passWord = pword;
System.out.println("A的有参构造函数:\n"+"  "+"用户名:"+userName+"\n"+"   "+"密码:  "+passWord+"\n");
}
}

class B extends A{

String identity;
String sex;

public B(){
System.out.println("B的无参构造函数"+"\n");
}

public B(String id,String sex){
this.identity = id;
this.sex = sex;
System.out.println("B的有参构造函数:\n"+"   "+"性别:"+sex+"\n"+"   "+"身份:"+identity+"\n");
}
}


运行结果:

A的无参构造函数第0次调用

A的有参构造函数:
用户名:瑞兹
密码:  啦啦啦德玛西亚

A的无参构造函数第1次调用

B的无参构造函数

A的无参构造函数第2次调用

B的有参构造函数:
性别:男
身份:法师


说明了创建一个子类的对象实例的时候,必先调用父类的无参数的构造函数(默认构造函数),假如父类有带参数的构造函数,那么系统将不会给它创建无参数的构造函数,这时,子类在实例化的时候,因为找不到父类的默认构造函数,编译器将会报错,但如果在子类的构造函数中指定用父类的带参数的构造函数的时候,或者在父类中加一个无参数的构造函数,就不会报错。
详细说明:
1、如果程序员没有给类A提供构造函数,则编译器会自动提供一个默认的无参数的构造函数,如果用户提供了自己的构造函数,则编译器就不在提供默认的无参数构造函数。
2、子类B实例化时会自动调用父类A的默认构造函数,所以如果A的默认的无参数的构造函数为private,则编译器会报错,而如果A没有提供默认的无参数的构造函数,而提供了其他类型的构造函数,编译器同样会报错,因为B找不到A的默认无参数构造函数。所以,我们最好给父类A提供一个无参数的构造函数。
3、在B的构造函数中显示的调用父类A的有参构造函数super(parameter);。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: