抱歉,,我没看完就发了,,原来后边有讲。。
class Pet
{
interface Iclimbtree
{
void climbtree();
}
interface Icatchmice
{
void catchmice();
}
public Pet(string name)
{
Name = name;
}
protected string Name;
virtual public void printf()
{
Console.WriteLine(Name);
}
public class Dog:Pet,Icatchmice,Iclimbtree
{
public void catchmice()
{
Console.WriteLine(" " + Name + "catch");
}
public void climbtree()
{
Console.WriteLine(" " + Name + "tree");
}
public Dog(string name):base(name)
{
}
override public void printf()
{
Console.WriteLine("mmm" + Name+"lll");
}
}
public class Cat : Pet
{
public Cat(string name):base(name)
{
}
override public void printf()
{
Console.WriteLine("mmm" + Name + "222");
}
}
}
class Program
{
static void Main(string[] args)
{
/*Pet dog1 = new Dog();
dog1.Name = "eat";
dog1.printf();
Pet cat1 = new Cat();
cat1.Name = "drink";
cat1.printf();*/
Pet[] pets = new Pet[] { new Dog("aaa"), new Cat("bbb") };
for(int i=0;i<=pets.Length;i++)
{
pets[i].printf();
}
Cat cat1 = new Cat("Tom2");
if(cat1 is Iclimbtree)
{
Iclimbtree cat = (Iclimbtree)cat1;
cat.Iclimbtree();
}
}
}
public Dog(string name).base(name)
这句话可以理解成,派生类构造函数的参数传进来,丢给base(),基类构造函数拿到这个参数,进行构造;所以不能不写
视频截图就好了,PPT我也不知道哪里下载。
对不起,我不是老师
当一个类中,没有定义一个构造函数,那么会默认定义一个无参的构造函数
当一个类中,已经定义了构造函数,那么无论是有参无参,都代替了那个默认的构造函数
構造函數(方法)本質就是給類的字段,屬性賦值。(初始化類的對象)
实例化中没法用,this调用本类中的字段如this.name;啥的 不知解释对吗