继承中的构造器

源代码1:

class Base{
    public Base(){
    System.out.println("Base类中的构造器");
}
}
class Base_Two extends Base{
    public Base_Two(){
        System.out.println("Base_Two类中的构造器");
    }
}
class Base_Three extends Base_Two{
    public Base_Three(){
        System.out.println("Base_Three的构造器");
    }
}
public class Java7 {
    public static void main(String[] args) {
        Base_Three ac=new Base_Three();
    }

}

运行结果:

源代码2:

class Base{
    public String name;
    public String sex;
    public Base(String name,String sex){
        this.name=name;
        this.sex=sex;
    }
}
class Base_Two extends Base{
    public String age;
    public Base_Two(String name,String sex,String age){
        super(name,sex);
        this.age=age;
    }
}
public class Java8 {
    public static void main(String[] args) {
        Base_Two ac=new Base_Two("xiaoming","man","19");
        System.out.println(ac.name+" "+ac.sex+" "+ac.age);
    }
}

运行结果:

1.由源代码1可以知道继承中虽然不会继承构造器,但是继承时是会把所有基类的构造器执行一遍;

2.由源代码2可知:继承中引用基类的构造器用关键字super,同一类中构造器的重载引用其他构造器用语句this;

3.即使父类中没有构造器,子类也会隐式地调用父类默认的无参数构造器;

时间: 2024-10-30 01:00:08

继承中的构造器的相关文章

JAVA继承中的构造器调用

关于继承中的构造器调用和调用顺序,做了个小测试,如下: class People {  String name;    //2,第二步,调用此无参构造器  public People() {   System.out.println(".父类的无参构造器");  }    //5,调用此有参构造器  public People(String name) {   System.out.println(".父类的有参构造器");   this.name = name;

理解继承中的构造器和析构器

1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 class FatherClass 7 { 8 public: 9 FatherClass(); 10 ~FatherClass(); 11 }; 12 13 FatherClass::FatherClass() 14 { 15 cout << "this is FatherClass constructor"

Java 继承中构造方法的执行顺序问题

在Java中,如果一个类没有任何显式创建的构造器则该类默认会有一个无参构造器:如果显式创建了有参构造器则该类就不再有默认无参构造器. 在Java继承中,构造器并不能被继承,而是被显示或隐式调用. 1.子类的构造方法中必须调用其基类的构造方法(显示或隐式) 1.1.若是显示调用,则可以通过 super(argument_list) 来调用,且super调用必须在首行以保证子类对象从所有直接或间接父类中继承的实例变量都被正确地初始化(this关键字可以调用本类中的其他构造器,也必须在首句,因此thi

继承机制中的构造器和析构器

正如此前所讲解的,C++支持程序员自己写出将创建或销毁一个对象时自动调用的方法,也就是构造器和析构器. 在没有继承机制的情况下,我们很容易理解这些方法在创建或销毁一个对象的时候被调用.但是一旦使用了继承机制,构造器和析构器就变得有点复杂了. 比如基类有个构造器,如Animal(),它将在创造Pig 类型的对象时最先被调用,如果Pig类也有一个构造器,它将排在第二个被调用.因为基类必须在类之前初始化原则! 然后我们继续讨论:如果构浩器带着输入参数,事情变得稍微复杂了. class Animal{

Java中的构造器

Java中的构造器 Java在使用new创建对象时,会调用其构造器,构造器与方法不同,其没有返回值,且其名字与类名一致,在构造器中,我们可以初始化类的一些fields,这样,当我们创建好对象后,这些对象都有了默认的初始值 . 当我们的类在继承父类的时候,在创建子类对象的时候,首先会调用父类的构造器,实际上,父类的构造器在调用之前,会继续调用Object类的构造器,当Object类的构造器调用完成之后,才调用父类的构造器,依次在调用子类的构造器.这样做的原因是,我们的子类对象的fields的值可能

Swift难点-继承中的构造规则实例详解

一.两种构造器-指定构造器和便利构造器 指定构造器:类中必备的构造器,为所有的属性赋初值.(有些子类可能不需要显示声明,因为默认从基类继承了) 便利构造器:类中的辅助构造器,通过调用指定构造器为属性赋初值.(仅在必要的时候声明) 举例 [plain] view plaincopy class Food { var name: String init(name: String) { self.name = name } convenience init() { self.init(name: "[

继承 传递 便利构造器

  A.继承和传递都是类的一种特性.其中继承就像父与子的关系一样,儿子可以从父亲那里得到钱财,这就继承,可是这些钱财现在已经变为儿子自己的东西,可以自己改动,要与不要取决于自己. 同理:类=父类中的实例变量到子类中,仍然存在,因为子类就是父类的延伸,只要是父类中存才的实例变量,那么子类中一定存在. a.可是方法就不是这样了.当子类的某些功能具体化之后,子类根据自己的需要可以自定义一些方法,改动从父类中继承的方法,甚至抛弃父类中方法. b.当存在一定数量的类时候,我们可以从这些类中,总结归纳出一些

Swift难点-继承中的构造规则实例具体解释

关于继承中的构造规则是一个难点. 假设有问题,请留言问我. 我的Swift新手教程专栏 http://blog.csdn.net/column/details/swfitexperience.html 为什么要有构造器:为类中自身和继承来的存储属性赋初值. 一.两种构造器-指定构造器和便利构造器 指定构造器:类中必备的构造器.为全部的属性赋初值.(有些子类可能不须要显示声明,由于默认从基类继承了) 便利构造器:类中的辅助构造器,通过调用指定构造器为属性赋初值.(仅在必要的时候声明) 举例 cla

单继承与多继承中的虚函数表和虚函数指针

首先,我们了解一下何为单继承,何为多继承?? 单继承:一个子类只有一个直接父类. 多继承:一个子类有两个或多个直接父类. 单继承中的虚函数表分析: 示例程序: #include <iostream> using namespace std; typedef void(*FUNC)(); class Base { public: virtual void func1() { cout << "Base::func1()" << endl; } virt