class Man : Person
public Man(sring name)
: base(name)
{}这里的: base(name) {}是什么意思呢?
我没学过c#,看一些C#的程序遇到的,来教教大家。还有,在动态语言里
p = Man.new //这样就创建了man对象了。
为什么在c#里有这样的用法的呢?Person person = new Man
为什么创建一个man对象给person,要在前面用Person这样来声明的?
public Man(sring name)
: base(name)
{}这里的: base(name) {}是什么意思呢?
我没学过c#,看一些C#的程序遇到的,来教教大家。还有,在动态语言里
p = Man.new //这样就创建了man对象了。
为什么在c#里有这样的用法的呢?Person person = new Man
为什么创建一个man对象给person,要在前面用Person这样来声明的?
调用基类上已被其他方法重写的方法。
指定创建派生类实例时应调用的基类构造函数。
基类访问只能在构造函数、实例方法或实例属性访问器中进行。 示例:
在派生类中调用基类方法。
// base 关键字
// 访问基类成员
using System; public class BaseClass
{
protected string _className = "BaseClass"; public virtual void PrintName()
{
Console.WriteLine("Class Name: {0}", _className);
}
} class DerivedClass : BaseClass
{
public string _className = "DerivedClass"; public override void PrintName()
{
Console.Write("The BaseClass Name is {0}");
//调用基类方法
base.PrintName();
Console.WriteLine("This DerivedClass is {0}", _className);
}
} class TestApp
{
public static void Main()
{
DerivedClass dc = new DerivedClass();
dc.PrintName();
}
} /**//*
控制台输出:
The BaseClass Name is BaseClass
This DerivedClass is DerivedClass
*/
在派生类中调用基类构造函数。
// keywords_base2.cs
using System;
public class BaseClass
{
int num; public BaseClass()
{
Console.WriteLine("in BaseClass()");
} public BaseClass(int i)
{
num = i;
Console.WriteLine("in BaseClass(int {0})", num);
}
} public class DerivedClass : BaseClass
{
// 该构造器调用 BaseClass.BaseClass()
public DerivedClass() : base()
{
} // 该构造器调用 BaseClass.BaseClass(int i)
public DerivedClass(int i) : base(i)
{
} static void Main()
{
DerivedClass dc = new DerivedClass();
DerivedClass dc1 = new DerivedClass(1);
}
} /**//*
控制台输出:
in BaseClass()
in BaseClass(1)
*/ 注意点 从静态方法中使用 base 关键字是错误的。
base常用于,在派生类对象初始化时和基类进行通信。
base可以访问基类的公有成员和受保护成员,私有成员是不可访问的
base是为了实现多态而设计
尽量少用或者不用base
2.不同于动态语言,在C#中,变量在使用之前必须先明确地声明。
这里是声明了一个基类变量,然后new一个派生类对象赋给它。
调用父类构造函数
this()
调用自己的另一个构造函数重载
调用父类构造函数,是一种简化的写法。