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();
问题:抽象类不能被实例化,为什么还可以调用构造函数,不是一旦调用构造函数,就实例化了吗
------解决方案--------------------
构造函数不是用来“构造”或者“实例化”对象的。
相反,构造函数是实例化对象之后被调用的。
类似的,析构函数是销毁对象之前调用的,而不是销毁对象用的。
所以你可以在构造函数中访问本类的成员,它们都初始化好了。