`
zy19880423
  • 浏览: 28706 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

java子类与父类构造器调用

    博客分类:
  • Java
阅读更多

class Super {
    int i=0;
    Super(String s){
       i=10;
    }
 }
 public class Child extends Super{
     int j=0;
     Child(String s){
         //super("a');

         j=10;
     }
    public static void main(String[] args) {
       Child c=new Child("s");
    }

}

以上发生编译错误.

分析:当一个类中指定了一个构造器后,系统就不会再为其创建一个默认的无参构造器。另外,在执行子类构造器时,如果未指定调用的父类构造器时,系统会自动调用父类的无参构造器.如果指定调用了父类的构造器则不会再调用无参构造器.

当执行子类Child类的构造器时由于未调用父类的构造器,所以系统自动调用父类无参构造器,但是父类无参构造器得不到调用,因为父类中不存在此构造器.因此发生编译错误

分享到:
评论

相关推荐

    java中的继承(子类调用父类构造方法还不懂).doc

    - **调用父类构造器**:最重要的是,`super`可以用于在子类构造器中调用父类的构造器。这对于初始化父类的状态非常有用。 - **追溯父类**:`super`不仅可以用于直接父类,还可以追溯到更远的祖先类。 **2. 调用父类...

    java 子类对象赋值给父类对象的使用

    2. **构造器与初始化**:子类对象在创建时会先调用父类的构造器,确保父类的状态得到正确初始化,然后执行子类自己的构造逻辑。 3. **变量隐藏**:如果子类和父类有同名的实例变量,子类变量会“隐藏”父类变量。...

    再次详细说明在继承中的程序执行顺序,子类与父类到底哪个先执行

    在Java中,如果子类没有显式调用父类的构造器,编译器会自动添加一个默认的`super()`调用,这将调用父类的无参构造器。如果父类有带参数的构造器,子类必须显式调用。 2. **初始化子类**: - 父类的构造器执行完毕...

    java 构造器的调用

    在Java编程语言中,构造器...了解和掌握构造器的调用、初始化、默认构造器、继承中的构造器调用以及构造器重载等概念,是编写高质量Java代码的基础。通过熟练运用这些知识,可以更有效地管理对象的生命周期和状态。

    论JAVA继承机制中父类与子类的关系

    如果父类没有无参构造器,则必须在子类构造器中显式调用父类构造器,通常使用`super(参数列表);`。 - 如果子类中定义了与父类同名的成员变量,父类的成员变量将被隐藏。同样地,如果子类定义了与父类同名且具有相同...

    子类调用抽象父类.zip

    在编程世界中,继承是...7. **构造函数调用**:子类可以使用`super`调用父类构造器。 以上就是关于“子类调用抽象父类”这一主题的主要内容,理解并熟练运用这些概念,可以帮助我们更好地设计和实现面向对象的程序。

    JAVA经典继承与父类调用 geter、seter访问器 构造器

    在父类中定义构造器,子类可以通过`super`关键字调用,以确保父类的初始化逻辑得以执行。例如,子类的构造器可能会这样写:`public Student(String name) { super(name); }`,这里`super(name)`调用了父类的构造器。...

    Java4Android 19_子类实例化过程

    当一个子类实例化时,其实例化过程涉及到多个步骤,这些步骤不仅包括自身的构造器执行,还包括对父类构造器的调用。下面将详细阐述Java中子类实例化的过程及其相关知识点。 首先,子类实例化时会先调用父类的构造器...

    java 静态块实例块构造器调用

    在Java继承体系中,子类会继承父类的非私有成员,包括静态块、实例块和构造器。调用顺序如下: 1. **静态块的执行顺序**:首先,从父类到子类,按照定义的顺序依次执行静态块。这意味着父类的静态块先于子类的静态...

    Java入门理解构造器

    - **使用`super`调用父类构造器**:在一个构造器内部,可以使用`super(参数列表)`来调用父类的构造器。同样地,这种调用也必须是构造器的第一条语句。 例如,在下面的示例代码中: ```java public class Platypus {...

    Java面向对象(进阶)- super关键字的使用与子类对象实例化全过程

    这个过程可以通过在子类构造器中使用`super(参数列表)`来显式调用父类构造器。 总结,`super`关键字在Java面向对象编程中起到了关键的作用,它帮助我们区分和调用父类的成员,确保在子类中能够正确地访问和重用父类...

    javase子类父类继承关系图解

    标题“javase子类父类继承关系图解”指的是对这一概念的可视化展示,帮助初学者更好地理解Java中的继承机制。 Java成员初始化顺序对于理解和正确使用继承至关重要。当创建一个子类对象时,其内存加载顺序遵循以下...

    Java父类继承代码示例

    例如,子类的构造器可以通过`super()`调用父类的无参数构造器,或者通过`super(param)`调用带参数的构造器。 ```java public class Dog extends Animal { public Dog() { super(); // 调用父类的默认构造器 } ...

    Java语言程序设计:JAVA_5-子类与继承.ppt

    `this()`关键字用于在子类构造器中调用本类的其他构造器,而`super()`则用于调用父类的构造器。`super()`必须作为子类构造器的第一条语句,因为它处理父类的初始化。 Java采用单继承策略,即一个类只能直接继承自一...

    Java中子类和父类之间的调用关系

    以下是一个示例,展示了如何在子类中正确调用父类构造器: ```java class Employee { public Employee(int id) { System.out.println("Employee constructor called with ID: " + id); } } class Teacher ...

    继承与接口的含义以及其子类相关的含义

    如果子类没有显式调用父类构造器,Java会默认调用无参构造器。如果父类没有无参构造器,则子类必须显式调用一个合适的父类构造器。 **子类的内存分布** 在内存中,子类对象包含父类的所有非静态成员,以及子类自己...

    浅谈Java中父类与子类的加载顺序详解

    注意,即使子类没有显式地调用`super()`,Java也会自动添加一个调用父类默认构造器的语句。 3. **子类初始化**: - 在父类初始化完成后,JVM开始处理子类的初始化。子类的非静态变量、初始化块和构造器会被执行。...

    java中带super关键字的程序内存分析

    这是Java强制子类构造器必须首先调用父类构造器的原因,除非父类有默认无参构造器,系统会自动插入`super()`调用。 2. **访问父类成员**:`super`关键字可以用来直接访问父类的非私有成员。例如,如果子类和父类有...

    构造器的解释.

    ### 构造器的解释与应用 #### 一、什么是构造器? 在面向对象编程语言中,构造器(Constructor)是一种特殊的方法...同时,了解子类构造器如何调用父类构造器也是十分重要的,这有助于更好地组织和管理类之间的关系。

    从零开始学JAVA第10章_构造器.ppt

    这是因为在子类构造器中,`super()`语句会被自动插入到子类构造器的第一行,除非显式地提供了其他构造器调用。这个过程确保了父类的状态在子类的状态之前被初始化。 总的来说,学习构造器是理解面向对象编程的关键...

Global site tag (gtag.js) - Google Analytics