父类 子类 构造方法

摘录

子类不能继承父类的显式定义的构造方法,若想要继承父类的构造方法,需要通过覆盖该构造方法,并在方法中通过super调用父类的该构造方法的方式来继承。

三种情况说明:

1、父类中没有显式定义任何构造方法,此时父类中实际有一个默认的无参数构造方法。这时,在子类中显式定义任何构造方法时,可以不用使用super调用父类的默认方法。

2、父类中显式定义了默认的无参数构造方法,那么子类可以定义任意的构造方法,而不必使用super调用父类的构造方法

3、父类中显示定义了构造方法,却没有显示定义默认的无参数构造方法,那么子类定义任何构造方法中都需要通过super调用父类的构造方法

时间: 2024-08-03 01:43:38

父类 子类 构造方法的相关文章

子类继承和调用父类的构造方法

1. 如果子类没有定义构造方法,则调用父类的无参数的构造方法,. 2. 如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法. 3. 如果子类调用父类带参数的构造方法,可以通过super(参数)调用所需要的父类的构造方法,切该语句做为子类构造方法中的第一条语句. 4. 如果某个构造方法调用类中的其他的构造方法,则可以用this(参数),切该语句放在构造方法的第一条. 说白了:原则就是,先调用父亲的.(没有就默认调,有了就按有

子类继承和调用父类的构造方法 (转)

子类继承和调用父类的构造方法1.如果子类没有定义构造方法,则调用父类的无参数的构造方法,.2.如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法.3.如果子类调用父类带参数的构造方法,可以通过super(参数)调用所需要的父类的构造方法,切该语句做为子类构造方法中的第一条语句.4.如果某个构造方法调用类中的其他的构造方法,则可以用this(参数),切该语句放在构造方法的第一条.说白了:原则就是,先调用父亲的.(没有就默认调

父类不含无参构造方法子类构造方法必须显式调用

一直不知道怎么取这个标题... 前两天发现我父类中定义了一个带参构造方法,然后子类继承后构造方法必须先调用父类方法带参构造方法,方法调用为super(参数,...). 然后我就上网查,可能关键字没搞对..哈哈...一直没明白,后来发现,如果父类含有不带参构造方法,那么子类就不需要上述操作. 那么为什么呢? 先说下类实例化的过程,也就是new一个对象的时候 首先默认运行的是类中无参的构造方法(这个可能在实例化过程java会为每一个类自动创建的),这是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处代码可以不要,因为Java会自动默认调用父类的无参数构造方法. 记住一点:在构造子类时,一定会调用到父类的构造方法.所以父类要么有一个默认的无参数

子类执行父类的构造方法

子类有时需要执行父类的构造方法 class annimal(object): def __init__(self): print('bar') self.type = '动物' class shengwu(object): def __init__(self): print('sengwu') self.tc = '生物' class cat(annimal,shengwu): def __init__(self): self.n = 'mao' super(cat,self).__init__

Java中不要在父类的构造方法中调用会被子类重写的方法

在Java中,不要在父类的构造函数中调用会被子类重写的方法,否则运行时会遇到意想不到的错误.看一个例子就会明白: import java.util.*; class Animal { public Animal() { eat(); } protected void eat() { System.out.println("Eat something"); } } public class Bird extends Animal { public Bird() { } @Override

【Simple Java】关于JAVA中子类和父类的构造方法

本篇文章总结了一些关于Java构造方法的常见问题. 为什么创建了一个子类对象会调用其父类的构造方法 如下代码示例: package simplejava; class Super { String s; public Super() { System.out.println("Super"); } } class Sub extends Super { public Sub() { System.out.println("Sub"); } } public clas

Java中子类继承父类关于构造方法的问题:there is no default constructor available in

there is no default constructor available in 原因 这个错误是由于继承引起的,原因是子类里写了并且使用了无参的构造方法(不写默认就是无参的构造方法),但是它的父类中却至少有一个是没有“无参构造方法”的,就会出现这个问题 总结 一个类如果显式的定义了带参构造函数,那么默认无参构造函数自动失效 一个类只要有父类,那么在它实例化的时候,一定是从顶级的父类开始创建.对于Java来说要一直追述到Object 祖宗(Object)-> 曾爷爷 -> 爷爷 -&g

java 静态资源,非静态资源,父类子类,构造方法之间的初始化循序

java面试经常被问静态资源,非静态资源,父类子类,构造方法之间的执行顺序.下面添加两个类做个测试 class Parent { // 静态变量 public static String p_StaticField = "父类--静态变量"; // 变量(其实这用对象更好能体同这一点,如专门写一个类的实例) //如果这个变量放在初始化块的后面,是会报错的,因为你根本没有被初始化 public String p_Field = "父类--变量"; // 静态初始化块