读书人

C#基础有关问题希望得到您的帮助1

发布时间: 2012-08-29 08:40:14 作者: rapoo

C#基础问题希望得到您的帮助1
抽象类不能实例化,
abstract class Person
{
public Person(string name, int age)
{
this.Name = name;
this.Age = age;
}
private string name;

public string Name
{
get { return name; }
set { name = value; }
}
private int age;

public int Age
{
get { return age; }
set { age = value; }
}
abstract public void SayHi();

}
class Student:Person
{
public Student(string name, int age)
: base(name, age)
{

}
public override void SayHi()
{

//throw new NotImplementedException();
Console.WriteLine("我是学生!!!");
}
}
Person[] p1 = {
new Student("张三",20),
new Teacher("老妖",20,1000),
new Student("李四",10)
};
foreach (Person item in p1)
{
if (item is Student)
{
Console.WriteLine("我是学生,耶!");
}
else if (item is Teacher)
{
Console.WriteLine("我是老师,我干!");
}
item.SayHi();

}
Console.Read();
问题:抽象类不能被实例化,为什么还可以调用构造函数,不是一旦调用构造函数,就实例化了吗

[解决办法]
构造函数不是用来“构造”或者“实例化”对象的。
相反,构造函数是实例化对象之后被调用的。

类似的,析构函数是销毁对象之前调用的,而不是销毁对象用的。

所以你可以在构造函数中访问本类的成员,它们都初始化好了。

读书人网 >C#

热点推荐