关于构造方法的一点疑惑,为什么父类的构造方法之后还调用了其他的构造方法?

表述不清,直接上代码

class A {
A(){
System.out.println("A()");
}
A(int i){
System.out.println("A(1)");

}

}

class B {
B(){
System.out.println("B()");
}

}
class C extends A{
B b=new B();
C(){
super(5);
System.out.println("C()");
}

}

public class Fifth {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    C c=new C();

}

}
输出是:
A(1)
B()
C()
问题是为什么在A(1)之后才出B(),这样等于c的构造方法被打断了不是麽?新手就执教

0
扫码支付0.1元 ×
其他相关推荐
Java继承,子类实例化时,调用父类的无参构造方法
子类继承父类时,会继承父类的非私有成员变量和方法。子类实例化时,必须执行父类一系列的初始化工作,如果有多个间接父类,从最初的那个父类执行,这样,子类才能够拥有父类的成员变量和方法。子类实例化时总是先调用父类的无参构造方法示例一父类:Father 子类:SonFather.java//package com;public class Father { private String name
为什么子类的构造方法一定会调用父类的某个构造方法
首先我们要知道构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用 子类中,它在调用父类中空参数的构造函数。因为子类继承父类,会继承到父类中的数据,所以必须要看父类是如何对自己的数据进行初始化的。所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程 定义一个Dog类继承自Animal类 Animal类中有一个有参构造方法,传入变量 name public cl
Python子类调用父类构造方法的两种方法
第一种方法: super().__init__(父类构造函数需要的参数,不包括self) class People: def __init__(self, name, age): self.name = name self.age = age class Student(People): def __init__(self, name,...
java中子类调用父类的构造方法
在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的?    答案如下:      当你new一个子类对象的时候,必须首先要new一个父类的对像出来,这个父类对象位于子类对象的内部,所以说,子类对象比父类对象大,子类对象里面包含了一个父类的对象,这是内存中真实的情况.构造方法是new一个对象的时候,必须要调的方
关于子类为何不能继承父类构造方法的几点解释
首先我们谈谈何为继承:他是面向对象的基本特征之一,是由已有类创建新类的机制。 他的原则就是子类继承父类的成员属性,包括实例成员变量和类成员变量。子类也可以继承除构造方法之外的所有成员方法,包括实例成员方法和类成员方法。接下来就是我们疑惑得地方:我们先说构造方法,我们知道每个类中购有属于自己的构造方法,即使你没有声明,但是java虚拟机也帮你建了一个隐式的构造方法,因此子类也一定会有自己的构造方法
父类构造方法中如果调用了子类重写的方法,会导致生成子类对象时,父类构造方法会调用子类重写的方法。
/**  * 此题是经典实例  * @author HS  *  */ class Supper {     int i = 10;     public Supper() {         //System.out.println("111111");         print();         i = 20;     }     public void print() {       ...
Java中父类和子类关于构造方法和私有属性的几个问题
Java中父类和子类关于构造方法和私有属性的几个问题一、什么是默认构造方法?子类构造方法与父类构造方法的关系? 通过前面的学习可以知道:默认构造方法是指无参构造方法,(1)隐式包含的默认构造方法:当类的定义中没有任何显式的构造方法(无参或有参)时,则系统默认会给该类一个隐式的无参构造方法。 (2)显式定义的默认构造方法:当类中显式定义了一个无参构造方法。 对于以下示例://父类 public c
为什么子类的构造方法要调用父类的构造方法
原因: 其实子类的所有构造方法的第一行都有一条隐身的语句super 解析: 在最开始总是看着其他人在写子类的构造方法的时候总是在第一句写出super(),开始有一些不理解,但是通过查找一些资料有了更为清晰的理解。 super()表示父类的构造函数并会调用于参数相对应的父类中的构造函数。子类中,它在调用父类中空参数的构造函数。因为子类继承父类,会继承到父类中的数据,所以必须要看父类是如何...
c#继承中的构造方法那些事……
对于继承,我想你们都很了解,但对于继承中的构造方法中的一些细节,我想你们中的某些人还未必了解……在此就扯蛋一下吧…… 1)子类诞生记: 当子类对象在堆内存中被创建时,会在子类对象内部同时创建一个父类对象,这也就解释了为什么创建好子类后会包含其父类中的所有属性和方法。 咱们专业人士要学会看门道……上图说明什么……子类被创建时,必须要先创建它的父类对象! 2)继承中的构造方法一些特殊规
子类构造方法创建为什么要调用父类的构造方法
1.构造方法为为了初始化对象中的属性和方法 2.子类继承父类的成员变量,所以要先调用fuqi父类的构造方法和属性。
为什么java的子类中必须调用父类的构造方法
子类继承父类的字段和方法。 你想那么子类中从父类继承的字段,要谁来初始化呢? 父类中有这些字段的初始化方式,所以最好的选择就是用父类的构造方法。 设计者,可能是这么考虑的。 再告诉你一个事,每当你new一个子类对象的时候,子类对象都隐式内置了一个父类对象。 java创建对象的三个步骤就是,申请内存,调用构造方法,返回对象引用。 所以说,为了那个内置的父类对象,也
java中关于子类实例化时调用父类无参构造方法的问题
java中子类在实例化的时候调用父类的无参构造方法容易混淆的大致分以下几种情况: 1、子类和父类同时具有有参和无参的构造方法,子类有参构造方法中第一行写的有super.(xx),且子类实例化时用的是有参构造方法,那么此时不会先调用父类的无参构造方法,而是直接调用子类的有参构造方法; 2、子类和父类同时具有有参和无参的构造方法,子类有参构造方法中第一行写的没有super.(xx),且子类
java 构造方法PPT
关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT
理解父类构造方法不能被子类继承
Constructor<? e> constructor = aclass.getConstructor(Context.class, ViewGroup.class); aclass extends bclass注意:通过实验证明,父类的构造方法 不能被子类继承,例如bclass 有构造方法b(context,viewgroup)aclass没有构造方法a(context,viewg...
用this调用类的构造方法
今天看书看到JAVA中This调用类的构造方法,书上写的不太明确,所以找了点资料补充了一下。 在一个Java类中,其方法可以分为成员方法和构造方法两种。构造方法是一个与类同名的方法, 在Java类中必须存在一个构造方法。如果在代码中没有显示的体现构造方法的话,那么编译器在编译的时 候会自动添加一个没有形式参数的构造方法。这个构造方法跟普通的成员方法还是有很多不同的地方。如 构造方法的话一
java-继承:实例化子类之前先要实例父类 即执行子类构造方法前先执行父类构造方法
因为子类继承了父类,那么就默认的含有父类的公共成员方法和公共成员变量,这些方法和变量在子类里不再重复声明。如果你初始化子类的时候,不初始化父类,那么你通过子类调用父类方法或变量的时候会出现什么情况呢?当然就是抛异常啊!在创建子类的对象时,jvm会首先执行父类的构造方法,然后再执行子类的构造方法,如果是多级继承,会先执行最顶级父类的构造方法,然后依次执行各级个子类的构造方法。...
关于子类调用父类构造方法的问题
昨天班级有一个小测验,结果自己觉得还不错的错了好几道题,自己总结了一下,主要是子类继承父类时候构造方法的问题不太清楚,今天就总结一下。1.子类会默认调用父类的无参构造方法举例来看:public class Derived extends Base {        public Derived (String s) {               System.out.println("这是子类的...
为什么子类必须要访问用父类的构造方法?
子类继承父类的字段和方法。 你想那么子类中从父类继承的字段,要谁来初始化呢? 父类中有这些字段的初始化方式,所以最好的选择就是用父类的构造方法。 设计者,可能是这么考虑的。 再告诉你一个事,每当你new一个子类对象的时候,子类对象都隐式内置了一个父类对象。 java创建对象的三个步骤就是,申请内存,调用构造方法,返回对象引用。 所以说,为了那个内置的父类对象,也需要进行初始化。...
在调用父类的构造方法时,super必在子类构造方法的第一行,否则会报错
/** * 在调用父类的构造方法时,super必在子类构造方法的第一行,否则会报错*/class Demo6{//显示定义了有参构造方法,这个类就没了隐藏了的无参构造方法public Demo6(String name){this.name = name;this.age = 0;}String name;int age;public void sleep(){System.out.println
执行子类的构造方法是否会调用父类的构造方法
 下面我们通过实例来看看结果 代码如下: public class Test01 { public static void main(String[] args) { //创建子类 Son son = new Son(); System.out.println("=========="); Son son2 = new Son("son"); } } class Fat...
Java面向对象总结
1.子类继承父类就拥有了父类的属性和方法。(代码的可重用) !!!父类的构造方法子类不能继承 2.在JAVA中使用关键字extends 3.调用子类的构造方法时,会先调用父类的构造方法。默认隐式调用父类无参数的构造方法 4.如果要在子类的构造方法中显式调用父类的构造方法。使用super(参数列表),但是这行代码必须是在 子类的构造方法的第一行。
Java子类继承父类,构造方法的执行顺序问题
在Java中,子类实例化时会调用父类构造方法,子类父类方法中会有一个函数生成表,执行时实现动态链接,子类重写父类方法时执行顺序也是这样    对于执行父类构造方法的问题。可以归纳为两种情况 1,如果父类有无参构造方法,子类会默认调用此方法(除非super显示调用父类有参)为隐式调用。 2,在子类中使用super显示调用父类有参了,或者this调用自身其他构造方法,则调用父类有
Java中静态代码块、构造方法、代码块、父类与子类之间执行顺序及父类子类实例化对象
PS:今天群里一个小伙伴笔试,匆匆发来的求助信息。。。1.父类、子类之间代码块与构造方法public class HelloA { public HelloA(){ System.out.println("HelloA"); } {System.out.println(&
java中this语句来调用其他构造方法的规则
大家对java构造方法的理解吗?对于java构造方法一般需要满足以下几条规则: (1)方法名必须与类名保持一致。 (2)不要声明返回类型。 (3)不能被static, final, synchronized, abstract和native修饰。构造方法不能被子类继承,所以用final和abstract修饰没有任何意义。构造方法用于初始化一个新建对象,所以用static修饰没有意
new 一个没有定义构造方法的子类对象,会调用父类的默认构造方法
如题:new 一个没有构造方法的子类,会调用父类的无参构造方法。如下面的两个类:
子类会自动调用父类的无参构造函数
今天去一个公司笔试,遇到了如下的一道题: class TestA{  public TestA(){   System.out.println("A");  } } class TestB extends TestA{  public TestB(){   System.out.println("B");  } } public class Test{  public
Java____父类、子类——构造代码块、方法调用顺序问题
package fatherson; //先静态初始化并且只有一次!!然后构造代码块!!再构造方法!! //声明一个继承自父类的子类时,先把父类的构造代码块及构造方法初始化然后初始化子类的构造代码块和构造方法 class Parent { public static String p_StaticField = "父类--静态变量"; public String p_Field = "父
Java中不要在父类的构造方法中调用会被子类重写的方法
在Java中,不要在父类的构造函数中调用会被子类重写的方法,否则运行时会遇到意想不到的错误。
父类和子类的构造方法、代码块和静态代码块的执行顺序
今天刷题的时候看到了一道题,是关于父类和子类的构造方法、代码块和静态代码块的执行顺序。发现这种题挺常见的,所以特意写了这篇文章帮助大家理解一下。 public class Son extends Father { public Son() { System.out.println("子类构造方法"); } { System.out.println("子类代码块"); } ...
子类构造方法与父类构造方法在调用时的联系
class SuperClass { private int n; SuperClass(){ System.out.println("SuperClass()"); } SuperClass(int n) { System.out.println("SuperClass(int n)"); this.n = n; } } class SubClass
如果父类没有无参的构造方法,那么其子类能否有无参数的构造方法?为什么?
不能,当你new一个子类对象的时候,必须首先要new一个父类的对象出来,而这个父类对象肯定是位于子类对象的内部,子类对象里面包含了一个父类的对象,这是内存中真实的情况.构造方法是new一个对象的时候,必须要调的方法,这是规定,要new父类对象出来,那么肯定要调用其构造方法,一个类,如果我们不写构造方法,那么编译器会帮我们加上一个默认的构造方法,所谓默认的构造方法,就是没有参数的构造方法,所以有时候...
关于子类构造方法中super关键字的使用记录
java中,父类中有无参构造方法,子类中可以构建构造方法而无需添加super,如果父类中没有无参构造方法,那么子类中就必须构建父类中有的构造方法(需遵循先构造父类,再构造子类),并且相应的有参构造方法的第一行就得有super(x,y...),不然会编译错误,有无参构造方法,子类中的有参构造方法就可以不加super(x,y...)。如下, 类Animal 添加  public Animal() {...
子类和父类构造方法的执行先后问题
在java中如果一个类中没有显式的使用super()进行调用超类的构造方法,则在执行子类构造方法之前会首先待用父类的构造方法,如下:/** * Created by zhuxinquan on 15-11-24. */class Circle{ double radius = 10; public Circle(){ //this(0); Syst
为什么在创建子类对象的时候会调用父类的构造函数
原文:Constructors of Sub and Super Class in Java? 1.为什么在创建子类对象的时候会调用父类的构造函数? public class Sub extends Super{ public Sub() { System.out.println("Sub"); } public static void main(...
关于自定义异常中为什么带参构造器需要显示调用父类异常的带参构造器
在听课的时候听到自定义异常时,视频上讲的定义异常的时候如果是带参构造器需要显示调用父类异常的带参构造器,原因是什么呢? 首先我们需要看一下Exception和ERROR的父类Throwable的源码: package java.lang; import java.io.*; /** * * Throwable是所有Error和Exceptiong的父类 * 注意它有四个构造函数: * Thr
JAVA中 子类与父类构造方法的关系 个人理解
编写JAVA作业时在继承的环节发现了一些错误,总结一些规律: 一句话概括就是:子类一定会调用(不是继承)父类的构造方法! 即遵循一个原则:子类的构造一定是在父类已构造的基础上!(以上属于自己归纳,可能有问题) 这句话要分为几种情况来理解(下面只讨论父类有构造函数): 子类构造函数自动调用super() (也可以手动加上) 但如果父类只有含参数的构造方法,那么子类必须申明一个构造方法,其中
创建子类对象时,父类构造函数中调用被子类重写的方法为什么调用的是子类的方法,而被子类重载的方法不会调用?
问题:创建子类对象时,父类构造函数中调用被子类重写的方法为什么调用的是子类的方法,而被子类重载的方法不会调用? public class Basic{ public void add(int i) { System.out.println("Basic add"); } public Basic() { add('a');
C++关于子类调用父类的构造方法的问题
最近一个小问题甚是迷惑我,让我思考了很久,最后做了一个实验,结果一下思路就通了,所以呢,我们如果对于一个问题不是很懂,不妨自己去验证一下,你会得到意想不到的结果,今天我们就来谈一下在子类调用父类构造方法的问题: 1.first of all,这一点很重要,子类初始化时是一定要调用父类的构造方法的,有参,无参,系统默认的,这一点不要弄乱了, 系统默认的无参构造函数与父类自己定义的无参的构造函数不
子类继承父类时,创建对象,构造方法的调用问题
在学习继承的时候,遇到一些小问题,这里总结一下,有错误望指正: 先来看一段代码: //标准父类 class Father{ //成员变量 private String name; private int age; //构造方法 //空参 public Father(){ } //有参 public Father(String nam
java中,子类能不能继承父类的构造方法?
class A{ public A(){} // 1:无参数构造方法。    public A(String s){} // 2. } class B extends A{  public B(String s){  super(s); // 3.    } } 说明:如果没有1处的无参数构造方法,那么3处一定要主动调用父类带参数的构造方法。如果有1处的构造方法,那么3处代码可
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 构造方法java学习 java构造方法的学习