public abstract class A { public static void fa() {} } use: A.fa();
如果類里面含有抽象的成員(哪怕只有一個),那這個類就必須聲明:abstract class 但是在這個abstract class中可以還可以包含非抽象的成員!!
public abstract class Animal { protected string name; public string Name { get { return name; } set { name = value; } } public Animal() { name = "The animal with no name"; } public Animal(string newName) { name = newName; } public void Feed() { Console.WriteLine("{0}has been fed.", name); } } public class Cow:Animal { public void Milk() { Console.WriteLine("{0}has been milked.", name); } public Cow(string newName) : base(newName) { } } public class Chicken:Animal { public void LayEgg() { Console.WriteLine("{0}has laid an egg.", name); } public Chicken(string newName) : base(newName) { } }这个里面cow 和chicken应该都是抽象的吧? 为什么它的以后的代码可以直接用来实例化.对象..(这个是c#入门经典里的代码)
{
public static void fa()
{}
}
use: A.fa();
但是在這個abstract class中可以還可以包含非抽象的成員!!
{
protected string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public Animal()
{
name = "The animal with no name";
}
public Animal(string newName)
{
name = newName;
}
public void Feed()
{
Console.WriteLine("{0}has been fed.", name);
}
} public class Cow:Animal
{
public void Milk()
{
Console.WriteLine("{0}has been milked.", name);
}
public Cow(string newName)
: base(newName)
{
}
}
public class Chicken:Animal
{
public void LayEgg()
{
Console.WriteLine("{0}has laid an egg.", name);
}
public Chicken(string newName)
: base(newName)
{
}
}这个里面cow 和chicken应该都是抽象的吧?
为什么它的以后的代码可以直接用来实例化.对象..(这个是c#入门经典里的代码)
‘它的派生类必须实例化了virtual函数才能成为非抽象的类.’
如果基类包含了virtual函数,则派生类必须实现该函数,否则派生类
也必须声明为抽象的。即包含了virtual成员的类一定是抽象类。