`
刘彦明
  • 浏览: 7651 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

子类与父类构造方法的问题

阅读更多
今天。在看马士兵的教学视频里面,隐隐约约懂得子类构造方法是要调用方法。是不是如果没有显示调用父类的构造方法系统就会自动把父类的无参构建方法给你放在子类构建的第一行。 是不是子类的构造方法都必须每一个中第一行对父类的进行调用?如果父类没有无参构造方法或没有有参构造方法,或两者都没有,其子类在构造方法的时候,怎么办呢? 
下面是学习时的一些代码,自己弄了下:如果父类只有无参、即使子类里面没有调用,系统也会自动加在子类构造方法的第一行。
心得:父类构造方法中:有“有参”无“无参”构造方法,子类不调“有参”,编译错误;
      父类构造方法中:无“有参”有“无参”构造方法,子类不调“无参”,默加通过;
      父类构造方法中:无“有参”无“无参”构造方法,子类其实会调用系统给父类的默认构造方法,然后被子类调用。

以上都是自己的见解,如有错误或不足,希能指出。

package com.gdut.liuyanming;
class SuperClass{
private int n;

SuperClass(){
System.out.println("SuperClass()");
}

SuperClass(int n){
System.out.println("SuperClass("+ n +")");
this.n = n;
}
}

class SubClass extends SuperClass{
private int n;

SubClass(int n){
//如果子类的构造方法中没有显式地调用基类构造方法,则系统默认调用基类无参的构造方法。其实这里是有super();
System.out.println("SubClass("+ n +")");
this.n = n;
}

SubClass(){
super(300);//如果使用super,必须写在子类构造方法的第一行。
System.out.println("SubClass()");
}
}

public class TestSuperSub {

/** 如果子类构造方法中既没有显式调用基类构造方法,而基类中有没有无参的构造方法,则编译出错。
* 子类的构造过程中必须调用其基类的构造方法。(子类第二个方法就调用了,因为第一个方法super()被默认。)
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SubClass sc1 = new SubClass();
SubClass sc2 = new SubClass(400);
}

}
分享到:
评论

相关推荐

    子类引用父类构造方法

    java训练题目 编写程序实现子类对父类构造方法的引用?

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

    Java 中的继承(子类调用父类构造方法还不懂) Java 中的继承是指一个类可以继承另一个类的属性和方法,这样可以实现代码的复用和提高开发效率。在 Java 中,继承使用关键字 `extends` 来实现。 Java 中继承的注意...

    Python子类继承父类构造函数详解

    ### Python子类继承父类构造函数详解 在Python面向对象编程中,继承是一个非常重要的概念。通过继承,一个类(称为子类)可以从另一个类(称为父类或基类)继承属性和方法。继承不仅可以提高代码的复用性,还可以...

    Java的子类调用父类的构造方法.pdf

    Java的子类调用父类的构造方法.pdf

    Python实现子类调用父类的方法

    本文实例讲述了Python实现...子类不显式调用父类的构造方法,而父类构造函数初始化了一些属性,就会出现问题 如果子类和父类都有构造函数,子类其实是重写了父类的构造函数,如果不显式调用父类构造函数,父类的构造

    子类对象构建调用父类的构造方法

    程序中描述了子类对象构建调用父类的构造方法,以及类变量和实例变量创建的不同过程

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

    本文将深入探讨在继承中的程序执行顺序,以及子类与父类的执行顺序问题。 首先,我们需要了解Java或Python等面向对象语言中类的构造过程。当一个类实例化时,其构造函数(在Java中是`构造器`,在Python中是`__init_...

    java 静态非静态 字段方法 子类父类构造_初始化顺序!

    java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...

    C++类继承之子类调用父类的构造函数的实例详解

    在本文中,我们将通过一个实例来详细介绍C++类继承之子类调用父类的构造函数的实现方法。 首先,我们定义了一个名为HttpUtil的父类,用于实现HTTP协议的网络请求。这个类中有两个成员变量:hInternet、hConnect和...

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

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

    php实现在子类中调用父类的方法

    这段代码会先输出“父类构造函数被调用”,然后输出“子类构造函数被调用”。 总结一下,PHP中在子类中调用父类方法主要有以下几点需要注意: 1. 使用`extends`关键字让子类继承父类。 2. 使用`parent::methodName...

    JS在子类中用Object.getPrototypeOf去调用父类方法

    当我们谈论子类与父类(也称为基类)的关系时,继承机制允许子类继承父类的属性和方法。在某些情况下,我们需要在子类中调用父类的方法,以便于扩展或覆盖原有功能。这里我们将深入探讨如何使用`Object....

    python课程设计-26-子类调用父类同名方法和属性之代码实现.ev4.rar

    例如,如果子类有一个与父类同名的方法,我们可以使用`super().method_name()`来调用父类的方法,而不是覆盖它。这样可以确保父类的方法依然能够执行。 ```python class Parent: def method(self): print("Parent...

    父类赋值给子类

    子类的构造函数可以接受一个父类对象作为参数,然后在构造函数内部,使用成员变量直接赋值或者通过 `base` 关键字调用父类的构造函数。例如: ```csharp public class Parent { public int Id { get; set; } ...

    C#中子类调用父类的实现方法

    除了构造函数,子类还可以通过`base`关键字调用父类的非静态方法和属性。例如,如果父类`Person`有一个`Name`属性: ```csharp public class Person { public string Name { get; set; } public Person(string ...

    java 子类构造方法

    构造方法与继承的关系 当子类继承父类时,子类可以访问并修改父类的所有非私有成员(包括构造方法)。子类可以通过调用父类的构造方法来初始化继承的属性。此外,子类也可以添加自己的属性和方法,这时就需要...

    java 简述父与子类的关系及构造方法

    // 父类构造方法 } } public class SonClass extends FatherClass { public SonClass() { super(); // 调用父类的构造方法 // 子类构造方法 } } ``` 如果父类有带参数的构造方法,子类在调用时也需要提供...

Global site tag (gtag.js) - Google Analytics