子类构造函数是否会默认调用父类的无参构造函数

1 package test;
2
3 public class TestB {
4
5     public TestB() {
6         System.out.println("TestB的无参构造函数...");
7     }
8
9 }
 1 package test;
 2
 3 public class TestA extends TestB {
 4
 5     public TestA(int i) {
 6         System.out.println(i);
 7     }
 8
 9     public static void main(String[] args) {
10         TestA a = new TestA(1);
11     }
12
13 }

执行上述代码后,运行结果如下:

从上述结果得知,在TestA的无参构造函数中默认调用了父类TestB的无参构造函数,即默认执行了super()代码

时间: 2024-12-28 17:09:11

子类构造函数是否会默认调用父类的无参构造函数的相关文章

JavaSE8基础 子类中所有的构造方法默认访问父类中无参构造方法

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: /*默认的:子类中所有的构造方法默认都会访问父类中无参构造方法*/ //父类 class Father { //无参构造函数 public Father() { System.out.println("父类无参构造函数"); } //有参构造函数 public Father(int num) { S

42)子类继承 有参父类 和无参父类

1)  子类继承有参的父类,那么  必须在子类的  构造函数的初始化列表那里,给父类赋值,比如说 父类 Student 的构造函数  是   Student(int  age  ,string  name) 然后我的子类的构造函数 须是: Student3(int  age ,string   name,int   sorce):Student(age,name) {                          } 2)总之,不管你是  有参父类构造函数  还是无参构造函数  那么就有了

子类构造函数会默认调用父类无参构造函数

1.调用父类无参构造函数是默认的! 子类的构造方法默认都去访问了父类的无参构造方法:在子类中的构造方法后都有一行默认语句 base() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Fu {   public Fu()     {         Console.WriteLine("fu");     } } class Zi : Fu {     public Zi()         : base()//不管是否显式调用,控制台都会输出fu

在子类中,一定要访问父类的有参方法?

abstract class Person{ private int age; private String name; public Person(int age,String name){ this.age=age; this.name=name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name

No default constructor for entity Java无参构造函数

异常 org.hibernate.InstantiationException: No default constructor for entity 当查询的时候返回的实体类是一个对象实例,是hibernate动态通过反射生成的 反射的Class.forName("className").newInstance();需要对应的类提供一个无参构造函数, 出现这种问题是一般都是实体类有一个有参的构造 ,没有无参构造, 下面说一下有参构造 和无参构造 1,每一个类在默认情况下,都会有一个无参

在子类中,若要调用父类中被覆盖的方法,可以使用super关键字

在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. package text; class Parent {    int x;    public Parent()    {                    System.out.println("Parent Created1");      }    public void show(){        System.out.println("Parent Created2");    }

子类构造、析构时调用父类的构造、析构函数顺序

析构函数调用的次序是先派生类的析构后基类的析构,也就是说在基类的的析构调用的时候,派生类的信息已经全部销毁了. 而定义一个对象时先调用基类的构造函数.然后调用派生类的构造函数:析构的时候恰好相反:先调用派生类的析构函数.然后调用基类的析构函数. 原因: 派生类构造函数中的某些初始化可能是基于基类的,所以规定构造在类层次的最根处开始,而在每一层,首先调用基类构造函数,然后调用成员对象构造函数(因为C++的成员变量是不会自动初始化的,只能使用初始化列表初始化(调用成员的构造函数)或在本层构造函数内初

C++类到底存不存在缺省无参构造函数

学习C++的时候有个问题老是忘,就是缺省无参构造函数,说的是定义类的时候,如果类本身没有构造函数,则调用一个缺省的无参构造函数,如果有构造函数,则就一定要按照构造函数的方式调用,这意味着如果定义了一个有参数的构造函数,那么在定义类的时候就一定要调用有参的那个构造函数,缺省的无参构造函数就不存在了. 说实话,当时学的时候感觉有点不可思议,但还是稀里糊涂的接受了,很多教材也是这样写的,但是真是这样吗,最近折腾llvm,它的IR对编译器动作表示的比较清晰,特意反汇编了一把看看,代码如下: #inclu

c#之有参和无参构造函数,扩展方法

例如在程序中创建 Parent类和Test类,在Test有三个构造函数,parent类继承Test类,那么我们可以在Test类自身中添加 扩展 方法吗? 答案:是不可以的.因为扩展方法必须是静态的,且静态方法是不存在构造函数的. 先看一段代码: public class Test { public Test() { Console.WriteLine("这是无参的构造函数"); } public Test(string name) { Console.WriteLine(string.