Java继承时构造函数的调用
来源:互联网 发布:软件管家安卓版 编辑:程序博客网 时间:2024/05/16 22:23
导读:
class Person
{
private String name="";
private int age=0;
public Person()
{
System.out.println("person无参数构造函数");
}
public Person(String name,int age)
{
this.name=name;
this.age=age;
System.out.println("person 2 参数的构造函数");
}
} bitsCN~com
class Student extends Person
{
bitsCN~com
private String school;
private String grade;
public Student()
{
System.out.println("student 无参数的构造函数");
}
public Student(String name ,int age,String school)
{
System.out.println("student 3 参数的构造函数");
}
public Student(String name ,int age,String school,String grade)
{
super(name,age);
this.school=school;
this.grade=grade;
System.out.println("student 4 参数的构造函数,super().");
}
}
bbs.bitsCN.com中国网管论坛
class Test
{
public static void main(String [] args)
{
System.out.println("st1:");
Student st2=new Student();
System.out.println("---------------------------");
System.out.println("st2:");
Student st=new Student("zhangshan",76,"武大");
System.out.println("---------------------------");
System.out.println("st3:");
Student st3=new Student("lisi",24,"武大","研究生");
}
}
中国_网管联盟bitsCN.com
DL@bitsCN_com网管软件下载
/*
=======================================
输出如下:
E:/JavaWork>java Test
st1:
person无参数构造函数
student 无参数的构造函数
---------------------------
st2:
person无参数构造函数
student 3 参数的构造函数
---------------------------
st3:
person 2 参数的构造函数
student 4 参数的构造函数,super().
bitsCN.nET*中国网管博客
**************************************
bitsCN~com
说明了创建一个子类的对象实例的时候,必先调用父类的无参数的构造函数(默认构造函数),假如父类有带参数的构造函数,那么系统将不会给它创建无参数的构造函数,这时,子类在实例化的时候,因为找不到父类的默认构造函数,编译器将会报错,但如果在子类的构造函数中指定用父类的带参数的构造函数的时候,或者在父类中加一个无参数的构造函数,就不会报错。 [bitsCN.Com]
=============================================
bitsCN~com
我们假设A是B的父类,B是A的子类。
1、如果程序员没有给类A没有提供构造函数,则编译器会自动提供一个默认的无参数的构造函数,如果用户提供了自己的构造函数,则编译器就不在提供默认的无参数构造函数。
2、子类B实例化时会自动调用父类A的默认构造函数,所以如果A的默认的无参数的构造函数为private,则编译器会报错,而如果A没有提供默认的无参数的构造函数,而提供了其他类型的构造函数,编译器同样会报错,因为B找不到A的默认无参数构造函数。所以,我们最好给父类A提供一个无参数的构造函数。
中国_网管联盟bitsCN.com
3、或者在B的构造函数中显示的调用父类A的有参构造函数。super(parameter)
本文转自
http://www.bitscn.com/java/base/200709/110154.html
class Person
{
private String name="";
private int age=0;
public Person()
{
System.out.println("person无参数构造函数");
}
public Person(String name,int age)
{
this.name=name;
this.age=age;
System.out.println("person 2 参数的构造函数");
}
} bitsCN~com
class Student extends Person
{
bitsCN~com
private String school;
private String grade;
public Student()
{
System.out.println("student 无参数的构造函数");
}
public Student(String name ,int age,String school)
{
System.out.println("student 3 参数的构造函数");
}
public Student(String name ,int age,String school,String grade)
{
super(name,age);
this.school=school;
this.grade=grade;
System.out.println("student 4 参数的构造函数,super().");
}
}
bbs.bitsCN.com中国网管论坛
class Test
{
public static void main(String [] args)
{
System.out.println("st1:");
Student st2=new Student();
System.out.println("---------------------------");
System.out.println("st2:");
Student st=new Student("zhangshan",76,"武大");
System.out.println("---------------------------");
System.out.println("st3:");
Student st3=new Student("lisi",24,"武大","研究生");
}
}
中国_网管联盟bitsCN.com
DL@bitsCN_com网管软件下载
/*
=======================================
输出如下:
E:/JavaWork>java Test
st1:
person无参数构造函数
student 无参数的构造函数
---------------------------
st2:
person无参数构造函数
student 3 参数的构造函数
---------------------------
st3:
person 2 参数的构造函数
student 4 参数的构造函数,super().
bitsCN.nET*中国网管博客
**************************************
bitsCN~com
说明了创建一个子类的对象实例的时候,必先调用父类的无参数的构造函数(默认构造函数),假如父类有带参数的构造函数,那么系统将不会给它创建无参数的构造函数,这时,子类在实例化的时候,因为找不到父类的默认构造函数,编译器将会报错,但如果在子类的构造函数中指定用父类的带参数的构造函数的时候,或者在父类中加一个无参数的构造函数,就不会报错。 [bitsCN.Com]
=============================================
bitsCN~com
我们假设A是B的父类,B是A的子类。
1、如果程序员没有给类A没有提供构造函数,则编译器会自动提供一个默认的无参数的构造函数,如果用户提供了自己的构造函数,则编译器就不在提供默认的无参数构造函数。
2、子类B实例化时会自动调用父类A的默认构造函数,所以如果A的默认的无参数的构造函数为private,则编译器会报错,而如果A没有提供默认的无参数的构造函数,而提供了其他类型的构造函数,编译器同样会报错,因为B找不到A的默认无参数构造函数。所以,我们最好给父类A提供一个无参数的构造函数。
中国_网管联盟bitsCN.com
3、或者在B的构造函数中显示的调用父类A的有参构造函数。super(parameter)
本文转自
http://www.bitscn.com/java/base/200709/110154.html
- Java继承时构造函数的调用
- Java继承时构造函数的调用
- Java继承时构造函数的调用
- java继承的构造函数调用顺序
- Java继承关系构造函数的调用
- java继承中构造函数的调用
- 【转】Java继承时构造函数的调用
- Java中继承关系的构造函数的调用顺序
- java中继承父类后构造函数的调用
- java关于继承中构造函数的调用顺序
- Java继承中调用子类构造函数
- Java继承时构造函数的关系
- Java构造函数的继承
- Java 构造函数的“继承”
- java构造函数的继承
- 多继承时的构造函数调用的顺序
- 单继承时的构造函数的调用次序
- 关于继承的构造,函数的调用
- JAVA 30个基本知识
- 如何运行Java程序和设置CLASSPAT
- 编程基础:Java中的数据结构
- 如何开始学习jsp
- 基础应用:java web三层架构程序实例(组图)
- Java继承时构造函数的调用
- Real Reasons
- Java本地接口工作方式初探
- 用ASP.NET上传图片并生成带版权信息的缩略图
- EasyNote: Makes taking notes while reading easier
- BCB 编写 DLL 终极手册
- VC++动态链接库((DLL)编程深入浅出(一)
- 创建线程后为什么关闭了线程句柄,线程还是可以运行?
- SAP相关的职位