`

类继承时构造方法的使用

阅读更多

第一 所有的类都有构造方法

1如果程序员没有给类显式的定义构造方法,则系统默认为该类定义一个默认的无参构造方法。

2如果程序员定义的类中有若干有参构造方法,则系统不再为该类定义无参构造方法。

第二 子类不能继承父类的构造方法

第三 子类在创建时,必须默认、直接或间接的调用父类的构造方法,以使父类内容先于子类创建和初始化

1如果父类未定义任何构造方法(系统会定义一个默认的无参构造方法)或者定义的构造方法中有一个是无参构造方法,则对子类构造方法没有影响。因为创建子类时会默认调用父类的无参构造方法。

例如:

public class ExtendsTest {
   public static void main(String[] args) {
      new Child1();
      new Child2();
   }
}
 
//父类中没有构造方法
class Parent{
   String name;
   public void setName(String name){
      this.name = name;
   }
   public void print(){
      System.out.println("name=="+name);
   }
}
 
class Child1 extends Parent{
   Child1(){
      //子类默认调用父类的无参构造方法
   }
}
class Child2 extends Parent{
   Child2(){
      super();//子类显示调用父类的构造方法
   }
}

 

2如果父类定义有若干有参构造方法,但没有定义无参构造方法则,子类构造方法中必须使用“super(参数)”的形式,直接调用父类构造方法;或者,在子类构造方法中调用“this(参数)”的形式间接调用父类构造方法

例如:

public class ExtendsTest {
   public static void main(String[] args) {
      new Child();
      new Child("李四");
   }
}
 
//父类中没有无参构造方法,只有若干有参构造方法
class Parent{
   Parent(String name){
     
   }
   Parent(String name,int age){
     
   }
}
 
class Child extends Parent{
   //构造方法1
   Child(String name){
//    super();这是错误的,因为父类没有无参构造方法
      super(name,30);//直接调用父类的有参构造方法
   }
  
   //构造方法2
   Child(){
      this("张三");//间接调用父类的构造方法,因为“构造方法1”中有对父类构造方法的调用
   }
}

 

注意:this(参数)或者super(参数),这两个对构造方法的调用语句必须放在构造方法中,而且是第一句

1
2
分享到:
评论
1 楼 在下个路口 2013-07-05  
写的代码有点乱似的。

相关推荐

    第十章 C#继承 派生类 派生类的构造方法.docx

    C#继承和派生类的构造方法 在C#中,继承是面向对象编程的基本概念之一。继承是指一个类可以继承另一个类的成员字段和函数,从而实现代码的复用和扩展。 在C#中,我们可以通过两种方式实现继承,即实现继承和接口...

    c++派生类继承构造函数方法

    c++派生类继承构造函数方法!!!!!!!!!!!

    构造方法JAVA构造方法

    当我们创建一个类的新实例时,Java会自动调用对应的构造方法来设置对象的初始状态。 ### 1. 构造方法的作用 - **初始化对象**:构造方法的主要目的是为新创建的对象设置初始值,确保对象处于可使用的状态。 - **...

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

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

    类继承构造方法super()调用可以吃吗

    ### 类继承构造方法super()调用解析 在Java编程语言中,类的继承是一个非常重要的概念,它允许我们创建一个新类(子类)来继承现有类(父类)的属性和方法。本文将深入探讨Java中如何通过`super()`关键字来调用父类...

    Java继承时构造函数的调用

    在`Student`的构造函数中,我们可以看到`super(name, age)`的使用,这表示`Student`类在初始化时会调用`Person`类的两个参数构造函数,将参数传递给父类。 在`Test`类的`main`方法中,我们创建了三个`Student`对象...

    java构造方法

    在类的继承结构中,构造方法的调用顺序遵循自底向上的原则,即从最底层的子类开始,逐级向上调用父类的构造方法,直到到达最顶层的基类(通常是`Object`类)为止。这一过程确保了所有层次上的初始化逻辑都被正确执行...

    PHP的类、对象、构造方法。

    构造方法是类的一个特殊方法,当创建类的新实例时自动调用。在PHP中,构造方法的名称是`__construct()`。我们可以利用构造方法来初始化对象的属性,如下所示: ```php class Person { public $name; private $age...

    java面试题静态加载顺序构造方法

    Java中的继承与静态static等的执行先后顺序的面试题 java面试题静态加载顺序构造方法 ...2、调用类的构造方法时先调用父类的构造方法,在调用子类的构造方法 3、类初始化时,先初始化类的属性成员,在执行构造方法。

    java 构造方法的资源

    当一个类继承自另一个类时,子类的构造方法可以使用`super`关键字调用父类的构造方法,确保父类的状态得到正确初始化。例如: ```java public class Student extends Person { private String major; public ...

    c#面向对象静态类、构造方法、静态方法介绍.zip

    通过“跟着王进老师学开发C#篇第二季”的系列教程,你将能够掌握面向对象编程的基本概念,例如定义全局静态变量、实现抽奖系统的功能、使用静态类以及理解构造方法的工作原理,从而快速入门C#编程。实践这些知识,你...

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

    在这个例子中,`Son`类继承自`Father`类但没有定义自己的`__init__`方法,因此在实例化`Son`时会自动调用`Father`的构造函数,并打印出`name: runoob`,然后调用`getName`方法返回`Sonrunoob`。 #### 三、子类重写...

    Java 构造方法

    当一个对象被创建时,构造方法会被自动调用,为对象的成员变量赋值,进行必要的设置,确保对象处于正确的初始状态。 在Java中,构造方法有以下特征: 1. **命名规则**:构造方法与类名完全相同,包括大小写。例如,...

    EXT dojochina Ext类构造方法.rar

    总结来说,本压缩包提供的资料专注于Ext类的构造方法,这涉及到Ext JS的核心编程概念,包括类的继承、构造函数的使用、配置对象、组件生命周期以及代码重用策略。掌握这些知识将有助于开发者更深入地理解和使用Ext ...

    java继承类实例

    在`main`方法中,我们创建了一个`Child`类的对象`c`,使用的是无参数的构造方法。因此,`c`的`name`会被初始化为"James",`age`为28。当子类的构造方法被调用时,会先执行父类的构造方法(如果有的话),这就是为...

    Java中构造方法的深入研究与探讨.pdf

    本文探讨了 Java 中构造方法的概念、特点和应用,通过对构造方法的深入研究和探讨,阐述了其在继承和设计模式中的重要作用。 知识点一:构造方法的概念和特点 构造方法是 Java 中一个特殊的方法,它用来初始化对象...

    day09 09 继承中构造方法的访问特点

    day09_09_继承中构造方法的访问特点

    java 子类构造方法

    在Java编程语言中,子类继承父类时,构造方法起着至关重要的作用。它们用于初始化对象,并在创建新实例时执行特定的设置步骤。理解如何在子类中使用构造方法是掌握面向对象编程的关键部分。本文将深入探讨Java子类...

    构造方法11_2.zip

    - 构造方法是类的一个特殊成员函数,它的主要任务是在创建对象时初始化对象的状态,即设置对象成员变量的初始值。 - 当我们使用`new`关键字创建一个对象时,系统会自动调用与之对应的构造方法。 2. **默认构造...

Global site tag (gtag.js) - Google Analytics