java中设置无参构造函数的必要性
来源:互联网 发布:c d3d人物透视源码 编辑:程序博客网 时间:2024/05/24 06:30
- 先看一下的java代码:
- 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 参数的构造函数");
- }
- }
- class Student extends Person
- {
- 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().");
- }
- }
- 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,"武大","研究生");
- }
- }
- /*
- =======================================
- 输出如下:
- E:/JavaWork>java Test
- st1:
- person无参数构造函数
- student 无参数的构造函数
- ---------------------------
- st2:
- person无参数构造函数
- student 3 参数的构造函数
- ---------------------------
- st3:
- person 2 参数的构造函数
- student 4 参数的构造函数,super().
- **************************************
- 说明了创建一个子类的对象实例的时候,必先调用父类的无参数的构造函数(默认构造函数),假如父类有带参数的构造函数,那么系统将不会给它创建无参数的构造函数,这时,子类在实例化的时候,因为找不到父类的默认构造函数,编译器将会报错,但如果在子类的构造函数中指定用父类的带参数的构造函数的时候,或者在父类中加一个无参数的构造函数,就不会报错。
- =============================================
我们假设A是B的父类,B是A的子类。
1、如果程序员没有给类A没有提供构造函数,则编译器会自动提供一个默认的无参数的构造函数,如果用户提供了自己的构造函数,则编译器就不在提供默认的无参数构造函数。
2、子类B实例化时会自动调用父类A的默认构造函数,所以如果A的默认的无参数的构造函数为private,则编译器会报错,而如果A没有提供默认的无参数的构造函数,而提供了其他类型的构造函数,编译器同样会报错,因为B找不到A的默认无参数构造函数。所以,我们最好给父类A提供一个无参数的构造函数。
3、或者在B的构造函数中显示的调用父类A的有参构造函数。super(parameter)
- java中设置无参构造函数的必要性
- 拷贝构造函数的必要性
- java无参构造函数的意义
- java中包的必要性
- 拷贝构造函数和赋值函数的必要性和意义
- 拷贝构造函数和赋值函数的必要性和意义
- 拷贝构造函数和赋值函数的必要性和意义
- java无参构造函数(默认构造函数)
- Java构造函数 为什么需要无参构造函数
- Java构造函数 为什么需要无参构造函数
- java无参构造函数与有参构造函数的应用
- C++之构造函数初始化列表存在的必要性
- 无参构造函数
- Java一种错误的实例化方法:在默认无参构造函数中进行实例化
- IBatis+Ninject没有为该对象设置无参的构造函数
- Class.forName java.lang.reflect.Constructor反射调用有参构造函数和无参构造函数的方法
- [Java] Java反射为什么需要无参构造函数
- ArcEngine 在VS2010WPF中AoInitializeClass 无构造函数的问题
- Oracle 安装系列 --静默创建数据库
- js中Eval用法
- ARM学习总结
- this的深入用法
- VS2008简体中文正式版迅雷高速下载 Visual Studio 2008 Team Suite
- java中设置无参构造函数的必要性
- 从学校到企业:如何转换角色?
- ExtJS的xtype列表
- 本人CSDN第一帖
- C风格的字符串
- Caliburn笔记-消息触发器(wpf框架)
- Caliburn笔记-方法(IMethod)的创建(wpf框架)
- Caliburn笔记-Action的创建(wpf框架)
- Caliburn笔记-元数据(Metadata)管理(wpf框架)