子类执行父类的构造方法

  • 子类有时需要执行父类的构造方法
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__()
m = cat()
print(m.__dict__)

 cat类继承了annimal类与shengwu类,在cat类的构造方法中执行了父类的构造方法super(cat,self).__init__(),所以结果:

但是,执行父类构造方法是,只是执行了annimal的__init__()方法,没有执行shegnwu的构造方法。这与继承父类执行父类中的方法顺序是一样的。

时间: 2024-07-28 17:21:27

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

C/C++:C++执行父类的构造方法

C++执行父类的构造方法.这是在原来那篇类的继承的基础上写的. 首先,我们创建一个工程.然后建立我们的父类. People.h: <span style="font-size:18px;">#ifndef PEOPLE_H #define PEOPLE_H #include<iostream> using namespace std; class People{ public: People();//People的默认构造方法 People(int age, i

【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 子类初始化父类的构造方法 成员变量不支持多态

class Fu{ int a=2; Fu() { System.out.println("fu run"); }}class Zi extends Fu{ Zi() { System.out.println("zi run"); }} public class Copy { public static void main(String[] args) { Zi zi = new Zi(); System.out.println(zi.a); } } 运行结果为 f

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

java中子类继承父类时是否继承构造函数

来源:http://www.cnblogs.com/sunnychuh/archive/2011/09/09/2172131.html --------------------- java继承中对构造函数是不继承的,只是调用(隐式或显式). 以下是例子: public class FatherClass { public FatherClass() {       System.out.println(100); } public FatherClass(int age) {      Syst

java中子类继承父类程序执行顺序问题

Java中,new一个类的对象,类里面的静态代码块.非静态代码.无参构造方法.有参构造方法.类的一般方法等部分,它们的执行顺序相对来说比较简单,用程序也很容易验证.比如新建一个测试父类. public class FatherTest { private String name; FatherTest(){ System.out.println("--父类的无参构造函数--"); } FatherTest(String name){ this.name=name; System.out

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

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

[转]Java中子类调用父类构造方法的问题分析

在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的? 答案如下:    当你new一个子类对象的时候,必须首先要new一个父类的对像出来,这个父类对象位于子类对象的内部,所以说,子类对象比父类对象大,子类对象里面包含了一个父类的对象,这是内存中真实的情况.构造方法是new一个对象的时候,必须要调的方法,这是规定,要new父类对象出来,那么肯定要调用其构造方法,所以: 第一个规则:子类的构造过程中,必须调用其父类的构造方