关于构造函数继承的一些问题

原创 2016年06月01日 00:20:45

关于构造函数继承的一些问题

一个父类,包含有参与无参构造函数

public class SuperClass
{
    public SuperClass()
    {
        System.out.println("父类无参构造函数");
    }

    public SuperClass(String arg)
    {
        System.out.println("父类带参构造函数,参数:" + arg);
    }
}

1.子类不定义构造函数,会继承父类所有构造函数吗?

只会继承无参构造函数

public class ClassA extends SuperClass
{
    //不定义构造函数,只继承父类中的无参
}

public static void main(String[] args)
{
    ClassA a = new ClassA();
    //a = new ClassA("ddd"); 编译器报错
}

结果:父类无参构造函数

2.子类定义无参构造函数,调用时会调用父类无参构造函数吗?

不然父类东西谁来初始化

public class ClassB extends SuperClass
{
    public ClassB()
    {
        System.out.println("子类无参构造函数");
    }
}

    public static void main(String[] args)
    {
        ClassB b = new ClassB();
        // b = new ClassB("d"); 同样不定义就没有带参数构造函数
    }

结果:

父类无参构造函数

子类无参构造函数

3.子类只定义带参数构造函数,会调用父类构造函数吗?

会!子类只定义带参数构造函数,就没有子类默认的无参构造函数了,但是仍然会调用父类无参构造函数

public class ClassC extends SuperClass
{
    public ClassC(String arg)
    {
        System.out.println("子类带参数构造函数,参数:" + arg);
    }
}

public static void main(String[] args)
{
    // ClassC c = new ClassC(); 编译器报错
    ClassC c = new ClassC("arg");
}

结果:

父类无参构造函数

子类带参数构造函数,参数:arg

4.子类定义有参与无参构造函数

初始化都会调用父类的无参

public class ClassD extends SuperClass
{
    public ClassD()
    {
        System.out.println("子类无参构造函数");
    }

    public ClassD(String arg)
    {
        System.out.println("子类带参数构造函数,参数:" + arg);
    }
}

public static void main(String[] args)
{
    ClassD d = new ClassD();
    d = new ClassD("arg");
}

结果:

父类无参构造函数

子类无参构造函数

父类无参构造函数

子类带参数构造函数,参数:arg

想要调用父类带参数构造函数怎么办?

用super

public class ClassE extends SuperClass
{
    public ClassE()
    {
        System.out.println("子类无参构造函数");
    }

    public ClassE(String arg)
    {
        super(arg);
        System.out.println("子类带参数构造函数,参数:" + arg);
    }
}

public static void main(String[] args)
{
    ClassE e = new ClassE();
    e = new ClassE("arg");
}

结果:

父类无参构造函数

子类无参构造函数

父类带参构造函数,参数:arg

子类带参数构造函数,参数:arg

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

构造函数和析构函数的一些问题

1、构造函数和析构函数为什么没有返回值? 构造函数和析构函数是两个非常特殊的函数:它们没有返回值.这与返回值为void的函数显然不同.后者虽然也不返回任何值,但还可以让它做点别的事情,而构造函数和析...

C++ 虚基类问题、继承体系中的构造函数执行过程。(

本篇博客是做了网上的一个题目,然后总结而来的,题目并不难,关键是你能否真正理解其中的过程。   解题思路:   (1)不能简单的认为“先执行基类构造函数,再执行子类构造函数” (2)更本上讲...

派生类构造函数和多重继承的二义性问题

一、派生类构造函数的写法(1)冒号前面是派生类构造函数的头部,这和我们以前介绍的构造函数的形式一样,但它的形参列表包括了初始化基类和派生类的成员变量所需的数据;冒号后面是对基类构造函数的调用,这和普通...

Java子类和父类的构造函数继承的问题分析

构造方法:方法名和类名相同,属性public,无返回值 构造方法可以多个,以重载的形式出现,对象创建默认以无参的构造函数为入口创建,可以隐藏子类继承父类(super父类接口一定会执行) 若父类只有...

Java继承的初始化与构造函数的执行顺序问题

我们知道在Java中,创建一个对象,先要执行各成员

一个经典的问题(构造函数调用+抽象类+间接继承抽象类)

经典案例 案例1: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

面向对象,继承,父类子类,继承中构造函数问题,对象初始化器

面向对象的三大特性:封装、继承、多态 什么水是类?什么是对象,类和对象的区别 类是模具,创建对象的模具,抽象的 类是一种数据类型,用户自定义的数据类型 类组成:字段,属性,方法,构造函数等 ...

类的继承和构造函数

  • 2014-04-03 15:56
  • 869B
  • 下载

构造函数继承.关于java

续:vector的push_back和复制构造函数问题

定义一个A类,其中自己定义了复制构造函数和默认构造函数。 定义一个A类的对象,把A类的对象添加到vector容器中。 其中调用A类复制构造函数次数问题。 比如:下列代码: #include #incl...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)