`
luzl
  • 浏览: 572152 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

继承关系中子类的构造函数

    博客分类:
  • Java
阅读更多
package scjp;

public class Demo78 {
	protected int i;  
		Demo78(int i){  
		this.i=i;  
	}
}

class B{
	
}

class C extends Demo78{
	
}

class D extends Demo78{
	D(){
		System.out.println(i);
	}
}

class E{
	class Demo78{
		
	}
}

class Demo78{
	
}




C,D会报错,请问为什么?

因为:C,D没有与超类相同的构造函数.C中没有定义构造函数所以JVM会自动添加一个空的构造函数,但是Demo78这个父类没有空的构造函数,这里又是另外一个问题:

    如果一个类没有写构造函数的话JVM会给它添加一个空的构造函数,如果它写了构造函 数还会不会添加这个空的构造函数呢?不会的。

  所以也就是Demo78中没有这个空的构造函数,所以C是错的。
 
  关于D答案是一样的,虽然它的这个构造函数不是JVM添加的。
分享到:
评论
2 楼 luzl 2008-11-12  
shenjianwangyi 写道

你這個東西編譯能通過? 如果一個類里面寫了一個構造方法 那么jvm就不會再給你創建一個構造方法了

编译通不过啊,我说C,D会报错呀,就是你说的这个原因:超类里没有jvm创建的那个无参数的构造方法了,所以报错呀。
1 楼 shenjianwangyi 2008-11-12  
你這個東西編譯能通過?
如果一個類里面寫了一個構造方法 那么jvm就不會再給你創建一個構造方法了

相关推荐

    构造函数与静态块的执行顺序

    在探讨继承中子类与父类构造函数及静态块的执行顺序时,我们首先需要理解构造函数和静态块的基本概念及其在Java中的作用。构造函数主要用于初始化对象的状态,而静态块则是在类加载到内存中时执行的一段代码,通常...

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

    ### Python子类继承父类构造函数详解 ...总结起来,Python中子类可以通过多种方式处理父类的构造函数:不重写、重写以及调用父类的构造函数。正确地管理这些构造函数可以帮助开发人员更有效地组织和维护代码。

    在C++中子类继承和调用父类的构造函数方法

     如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。  构造原则如下:  1. 如果子类没有定义构造方法,则调用父类的无参数的构造方法。 ...

    Java序列化中子类、父类构造函数问题实例分析

    本文通过实例分析了Java序列化中子类、父类构造函数问题,展示了父类和子类之间的继承关系对序列化的影响。同时也展示了在反序列化时父类构造函数的调用顺序。这些知识点对于Java开发人员来说非常重要,可以帮助他们...

    C++继承与派生类习题 (2).docx

    - 在创建派生类对象时,构造函数的调用顺序是:首先调用虚基类的构造函数,然后是派生类中子对象类的构造函数,最后是派生类自己的构造函数。 5. **析构函数的执行顺序**: - 当对象消亡时,析构函数的执行顺序与...

    C++继承与派生类习题 (2).pdf

    4. 构造函数和析构函数:在派生类构造对象时,构造函数的调用顺序为:先调用虚基类的构造函数,然后是派生类中子对象类的构造函数,最后是派生类自身的构造函数。析构函数的执行顺序则相反,先执行派生类的析构函数...

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

    在C#编程语言中,面向对象程序设计是核心特性之一,其中包括类的继承关系。当一个类(子类)继承自另一个类(父类)时,子类不仅可以使用父类的公共成员,还可以覆盖或扩展它们。在某些情况下,我们需要在子类中调用...

    python中子类调用父类函数的方法示例

    首先,Python中的初始化方法是`__init__()`,这是每个类都会用到的构造函数,用于创建新对象时进行初始化操作。父类和子类都可以有自己的`__init__()`方法,但子类的`__init__()`会覆盖父类的版本。为了在子类中调用...

    C++面向对象程序设计试题带答案(四).pdf

    5. 派生类构造函数:派生类构造函数的成员初始化列表可以初始化基类的构造函数、派生类中子对象以及一般数据成员,但不能初始化基类中子对象,因为基类的构造函数会在派生类构造函数之前调用。 6. 运算符重载:重载...

    C++面向对象程序设计模拟试题四.doc

    5. **构造函数的成员初始化**:派生类构造函数的成员初始化表可以包含基类的构造函数、派生类中子对象的初始化以及派生类中一般数据成员的初始化,但不能包含基类中子对象的初始化,因为这是自动进行的。 6. **重载...

    java语言程序设计习题

    20. **构造函数**:类可以有多个构造函数,这称为构造函数重载。 21. **取余运算符**:Java中的`%`运算符可以对整型和浮点型进行操作,不仅限于整型。 22. **Java程序类型**:Java Application可以在图形或字符...

    JS继承的实现方式

    - 解决了原型链继承中子类实例共享父类引用属性的问题。 - 可以在创建子类实例时向父类传递参数。 - 支持多继承。 **缺点**: - 实例只属于子类。 - 只能继承父类的实例属性和方法,不能继承原型属性或方法。 - 每个...

    C++面向对象程序设计试题带答案(四).docx

    - 成员初始化:派生类构造函数的成员初始化列表可以初始化基类、派生类的子对象和数据成员,但不能初始化基类中子对象,因为基类的构造函数会自动处理它们的初始化。 5. **运算符重载** - 重载运算符:运算符重载...

    关于ES6中子类继承的实现原理逐行解析

    所以到了es6对一个对象生成器(构造函数)也定义了新的写法——类(class)使之写法和面向对象的写法更像 现如今我们定义一个一个构造函数就是定义一个类,写法如下: class Parent { constructor(name,age){ ...

    python中子类继承父类的__init__方法实例

    ### Python中子类继承父类的`__init__`方法详解 #### 前言 在面向对象编程中,继承是一种强大的机制,它允许我们创建一个新的类(子类),该类继承了现有类(父类)的所有属性和方法。Python支持这种特性,并且...

Global site tag (gtag.js) - Google Analytics