精华内容
下载资源
问答
  • 1、显示调用父类构造方法 2、不重写父类构造方法

    1、显示调用父类构造方法

    2、不重写父类构造方法

    展开全文
  • 子类继承父类时,若父类有 无参构造方法,则子类构造方法默认隐式调用父类无参构造方法, 当父类没有 无参构造方法,子类的构造方法必须显式调用父类的有参构造方法。   所以代码可以这样改: class A...

    来自csdn论坛的一个帖子,问题如下:

    class A{
        public int i=0;
        A(int m){
            i=1;
        }
    }
    
    class B extends  A{
        B(int m){
            i=2;
        }
    }
    
    public class E{
        public static void main(String args[]){
            B b=new B(100);
            System.out.println(b.i);   
        }
    }

     

    我的回答是:

     

    一个类如果没有定义任何构造方法,系统会默认生成一个无参构造方法,
     当有定义有参构造方法时,则不会自动生成无参构造方法。
    
    子类继承父类时,若父类有 无参构造方法,则子类构造方法默认隐式调用父类无参构造方法,
    当父类没有 无参构造方法,子类的构造方法必须显式调用父类的有参构造方法。

     

    所以代码可以这样改:

    class A{
        public int i=0;
        A(){    //父类添加无参构造
        }
        A(int m){
            i=1;
        }
    }
    
    class B extends  A{
        B(int m){
            i=2;
        }
    }
    
    public class E{
        public static void main(String args[]){
            B b=new B(100);
            System.out.println(b.i);   
        }
    }

     或

    class A{
        public int i=0;
        A(int m){
            i=1;
        }
    }
    
    class B extends  A{
        B(int m){
            super(m);    //子类显式调用父类构造
            i=2;
        }
    }
    
    public class E{
        public static void main(String args[]){
            B b=new B(100);
            System.out.println(b.i);    
        }
    }

     

    展开全文
  • 在本文里我们给大家分享一篇关于Python 子类继承父类构造函数的相关知识点内容,需要的朋友们跟着学习下。
  • 简单说,如果子类继承父类自己写构造方法中没有显示调用父类有参构造方法,则会先隐式调用父类无参构造方法,若是先显示(super(300))调用了父类有参构造方法,则父类的无参构造方法就不会再被调用。 ...

    简单说,如果子类继承父类自己写构造方法中没有显示调用父类有参构造方法,则会先隐式调用父类无参构造方法,若是先显示(super(300))调用了父类有参构造方法,则父类的无参构造方法就不会再被调用。

     

    展开全文
  • Java子类继承父类构造

    千次阅读 2018-05-04 11:16:26
    子类如何继承父类的构造器?2.子类父类构造器执行顺序?二、创建父类创建父类Animal,有两个构造器class Animal{ private Integer high; public Animal() { System.out.println("Animal()"); } ...

    一、研究问题

    1.子类如何继承父类的构造器?

    2.子类与父类构造器执行顺序?

    二、创建父类

    创建父类Animal,有两个构造器

    class Animal{
        private Integer high;
    
        public Animal() {
            System.out.println("Animal()");
        }
    
        public Animal(Integer high) {
            System.out.println("Animal(Integer high)");
            this.high = high;
        }
    
    //    set、get方法
        public Integer getHigh() {
            return high;
        }
    
        public void setHigh(Integer high) {
            this.high = high;
        }
    }

    三、创建子类

    创建子类Dog,继承Animal,有四个构造器

    class Dog extends Animal{
        private String name;
    
        public Dog() {
            System.out.println("Dog()");
        }
    
        public Dog(String name) {
            this.name = name;
            System.out.println("Dog(String name)");
        }
    
        public Dog(Integer high) {
            super(high);
            System.out.println("Dog(Integer high)");
        }
    
        public Dog(Integer high, String name) {
            super(high);
            this.name = name;
            System.out.println("Dog(Integer high, String name)");
        }
    
    //    set、get方法
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }

    四、调用子类构造器

    public class MyMain {
        public static void main(String[] args) {
            System.out.println("- - - - - - - new Dog() - - - - - - -");
            Dog dog = new Dog();
    
            System.out.println("- - - - - - - new Dog(Integer high) - - - - - - -");
            Dog highDog = new Dog(180);
    
            System.out.println("- - - - - - - new Dog(String name) - - - - - - -");
            Dog nameDog  = new Dog("张二狗");
    
            System.out.println("- - - - - - - new Dog(Integer high, String name) - - - - - - -");
            Dog highNameDog = new Dog(180,"张二狗");
    
        }
    }

    五、输出结果

    - - - - - - - new Dog() - - - - - - -
    Animal()
    Dog()
    - - - - - - - new Dog(Integer high) - - - - - - -
    Animal(Integer high)
    Dog(Integer high)
    - - - - - - - new Dog(String name) - - - - - - -
    Animal()
    Dog(String name)
    - - - - - - - new Dog(Integer high, String name) - - - - - - -
    Animal(Integer high)
    Dog(Integer high, String name)

    六、结论

    1.子类通过super调用父类构造器

    子类通过super()调用父类无参构造器;通过super(参数)调用父类有参构造器;如果不写super,子类默认调用父

    类无参构造器

    2.子类创建对象时,父类构造器会先执行。

    因为在构造器中super必须放在第一个执行,否则会报错


    展开全文
  • Python 子类继承父类的两种写法: 如果在子类中需要父类的构造方法就需要显式地调用父类的构造方法,或者不重写父类的构造方法。 子类不重写 init,实例化子类时,会自动调用父类定义的 init。 情况一:子类...
  • !...创建子类对象时,Student s = new Student("school"); 该构造方法中没有显示调用父类构造方法,但还是编译成功了,!...该构造方法调用自身的构造函数,此构造函数中有调用父类构造方法,执行成功的原因是什么
  • 子类继承父类构造方法 情况一:子类需要自动调用父类的方法:子类不重写__init__()方法,实例化子类后,会自动调用父类的__init__()的方法。 情况二:子类不需要自动调用父类的方法:子类重写__init__()方法,...
  • 1、在子类中需要父类构造方法就需要调用父类构造方法,或者不重写父类构造方法子类不重写 init,实例化子类时,会自动调用父类定义的 init。 class Father(object): def __init__(self, name): self.name...
  • 在Java中,子类实例化时会调用父类构造方法子类父类方法中会有一个函数生成表,执行时实现动态链接,子类重写父类方法时执行顺序也是这样  对于执行父类构造方法的问题。可以归纳为两种情况 1,如果...
  • 关于PHP中构造函数以及子类继承父类构造函数的相关问题这几天一直在看php与mysql程序设计,在看到面向对象用法是发现一个问题 书上的代码是这样的: class Employess { protected $name; protected $title; ...
  • 子类实例化时,首先调用父类构造方法然后再调用子类构造方法父类构造方法super()或super(XXX)存在于子类构造方法的代码的最上部。 最不起眼的方式是在子类的默认构造方法中,隐式的调用super().那么子类的...
  • 关于子类调用父类构造方法的问题

    万次阅读 多人点赞 2018-03-29 22:01:04
    昨天班级有一个小测验,结果自己觉得还不错的错了好几道题,自己总结了一下,主要是子类继承父类时候构造方法的问题不太清楚,今天就总结一下。1.子类会默认调用父类的无参构造方法举例来看:public class Derived ...
  • java子类继承父类方法的重写(覆盖)   在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。 格式: class 子类 extends 父类 {} public class Text { public static void main (String[]...
  • Java子类调用父类构造方法

    万次阅读 多人点赞 2017-09-29 14:49:15
    在Java中,子类构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的?   答案如下:   当你new一个子类对象的时候,必须首先要new一个父类...
  • 子类继承父类,父类中的构造

    千次阅读 2016-11-03 12:06:58
    子类继承父类时,父类中必需有无参构造器,子类才可以继承父类? 可是父类中只有有参构造器时,就不能实现子类继承父类了吗?
  • 子类继承父类构造方法时,默认会隐式调用。即在编译时默认加入:子类构造方法名(){ super(); //super关键字调用父类的构造方法 }这个特性决定了,如果父类里显示地声明了构造方法,并附有参数列表的话,子类...
  • java 子类继承父类方法的执行顺序

    千次阅读 2018-05-01 18:24:03
    结论: java中子类继承父类各方法的执行顺序:(这里只写jvm自动调用的方法的顺序,包括静态代码块、代码块、构造方法) 1、第一次创建子类对象 父类静态代码块 子类静态代码块 父类代码块 父类构造方法 子类...
  • 一句话概括就是:子类一定会调用(不是继承父类构造方法! 即遵循一个原则:子类的构造一定是在父类已构造的基础上!(以上属于自己归纳,可能有问题) 这句话要分为几种情况来理解(下面只讨论父类有构造函数)...
  • C++ 子类继承父类构造函数

    千次阅读 2012-05-10 01:38:07
    C++ 子类继承父类构造函数 前面常写点java的代码,对于C++基本的一些概念很模糊了,就当写个小笔记 之后遇到问题肯定还要补充。 主要内容: a. 子类继承父类写法 b. 子类继承父类构造函数   创建...
  • 构造 函数时,默认继承父类构造方法:输出结果为 Class A... // 子类 定义了 构造 函数时,就不会继承父类构造方法:输出结果是 Class B... class A{   public function __construct(){  ...
  • 他的原则就是子类继承父类的成员属性,包括实例成员变量和类成员变量。子类也可以继承除构造方法之外的所有成员方法,包括实例成员方法和类成员方法。接下来就是我们疑惑得地方:我们先说构造方法,我们知道每个类中...
  • 为了搞清当一个子类继承父类并调用了子类的某个方法时,在父类和子类中各个代码块的执行顺序 我们自己创建一个父类Parent和一个子类Child,代码如下: 父类代码: 1 package ParentAndChild; 2 3 ...
  • 在测试类中创建了Student对象,应该先执行的是父类的构造方法,然后在执行子类的构造方法,但是执行父类构造方法的时候,为什么调用的是子类的f()方法。 然后把f()方法的public改成private的话,又是另一种结果...
  • 子类继承父类后,代码块和构造方法的运行先后的顺序
  • 子类调用父类构造方法问题

    千次阅读 2010-01-26 10:07:00
    在Java中,子类构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的? 答案如下: 当你new一个子类对象的时候,必须首先要new一个父类的对像出来,这...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 248,450
精华内容 99,380
关键字:

子类继承父类构造方法