如何指定在创建派生类实例时调用的基类构造函数

using System;
public class BaseClass
{
    int num;

    public BaseClass()
    {
        Console.WriteLine("in BaseClass()");
    }

    public BaseClass(int i)
    {
        num = i;
        Console.WriteLine("in BaseClass(int i)");
    }

    public int GetNum()
    {
        return num;
    }
}

public class DerivedClass : BaseClass
{
    // This constructor will call BaseClass.BaseClass()
    public DerivedClass() : base()
    {
    }

    // This constructor will call BaseClass.BaseClass(int i)
    public DerivedClass(int i) : base(i)
    {
    }

    static void Main()
    {
        DerivedClass md = new DerivedClass();
        DerivedClass md1 = new DerivedClass(1);
    }
}
时间: 2024-07-31 14:15:06

如何指定在创建派生类实例时调用的基类构造函数的相关文章

域初始化、静态块及构造方法等在创建类实例时的执行顺序(转载)

在<Core java 2: volumn 1, Edition 5>一书的第四章“对象与类”中讲到域赋值语句.实例块.静态块及构造方法等在创建类实例时的执行顺序,中文译本有些处翻译的不贴切,而英文原书中也有一处错误.本文通过一个小程序来说明类实例构造过程中的语句执行顺序. 程序如下: public class Teststaticblock { public Teststaticblock() { this("second"); System.out.println(&q

详解C++中基类与派生类的转换以及虚基类

很详细!转载链接 C++基类与派生类的转换在公用继承.私有继承和保护继承中,只有公用继承能较好地保留基类的特征,它保留了除构造函数和析构函数以外的基类所有成员,基类的公用或保护成员的访问权限在派生类中全部都按原样保留下来了,在派生类外可以调用基类的公用成员函数访问基类的私有成员.因此,公用派生类具有基类的全部功能,所有基类能够实现的功能, 公用派生类都能实现.而非公用派生类(私有或保护派生类)不能实现基类的全部功能(例如在派生类外不能调用基类的公用成员函数访问基类的私有成员).因此,只有公用派生

类的集成,对基类私有成员的访问

派生类不能直接访问基类的私有成员,若要访问必须使用基类的接口,即通过其成员函数.实现方法有如下两种: 1.在基类的声明中增加保护成员,将基类中提供给派生类访问的私有成员定义为保护成员.2.将需要访问基类私有成员的派生类成员函数声明为友元. #include<iostream> using namespace std; class Base {       friend class Derived2;//friend       int x;       protected://protecte

c++——继承类中的子对象和基类对象的初始化

先给结论: (1)派生类中的基类子对象和子对象必须初始化,初始化在派生类的构造函数的初始化列表中,如果初始化列表中没有进行初始化,则调用缺省的构造函数进行初始化. (2)派生类构造函数的调用顺序: 基类的构造函数 子对象类的构造函数 派生类的构造函数 例子 class point1 { public: point1(); point1(int i); virtual ~point1(); private: int x; }; point1::point1() { x=1; cout<<&quo

第七章-复用类-继承语法-2初始化基类-带参构造器

书上代码示例: 1 package com.learnJava.test; 2 3 /** 4 * @Author zhuchangli 5 * @Date 2019/9/14 6 **/ 7 class Game{ 8 Game(int i){ 9 System.out.println("Game constructor"); 10 } 11 } 12 13 class BoardGame extends Game{ 14 BoardGame(int i){ 15 super(i);

C#:在继承的子类中初始化基类字段,并访问基类字段,方法

一.基类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Inherit { public class Person { private string _name; private int _age; private int _height; private string _gender; pr

多态时最好将基类的析构函数设为virtual、 C++中两个类相互包含引用问题 (转载)

多态:http://blog.csdn.net/tmljs1988/article/details/8146521 C++中两个类相互包含引用问题:http://blog.csdn.net/leo115/article/details/7395077 http://blog.csdn.net/tmljs1988/article/details/6081132

Java反射特性--获取其他类实例并调用其方法

1. 代码结构 .├── com│   └── test│   └── MyTest.java└── MainCall.java 2. 代码内容 MyTest.java: package com.test; public class MyTest { public void do_test() { System.out.println("Doing test...\n"); } } MaiCall.java import java.lang.reflect.Method; public

[No000085]C#反射Demo,通过类名(String)创建类实例,通过方法名(String)调用方法

using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; class test { public void Method()//1 { Console.WriteLine("1:__" + "Method调用成功!"); } public void Method(string str)//2 { Cons