class Dog
{
public string Name { get; set; }
public void Shout() { Console.WriteLine(this.Name + ":汪汪"); }
}
class Cat
{
public string Name { get; set; }
public void Shout() { Console.WriteLine(this.Name + ":喵喵"); }
}
可以看到Cat类和Dog类几乎一致,但是我们还是得完整的写下来
继承可以很好的解决这个问题,相同的部分继承过来就好了嘛!
class Animal
{
public string Name { get; set; }
}
class Dog:Animal
{
public void Shout() { Console.WriteLine(this.Name + ":汪汪"); }
}
class Cat:Animal
{
public void Shout() { Console.WriteLine(this.Name + ":喵喵"); }
}
可以看到在Dog和Cat后面加上:Animal表示继承
此时,Animal叫做父类/基类/超类
Cat和Dog叫做派生类/子类
要点一、C#只允许单一继承
什么意思?意思是Dog后面只能继承一个父类
比如现在Dog后面继承的是Animal,那就不能再接其他的了
要实现多继承,需要使用接口这个概念...下一篇写
问题一、想从父类继承私有属性,怎么办?
假如直接往Animal里面写个private,
那么只能在Animal这个类里面访问,根本达不到继承的目的呀!!
protected关键字出现了,可以保证继承而不被外部访问
class Animal
{
protected int beautiful { get; set; }//多添加的属性
public string Name { get; set; }
}
class Dog:Animal
{
public Dog() { this.beautiful = 2; }//构造方法,初始化beautiful
public void Shout() { Console.WriteLine(this.Name + ":汪汪,美丽值是"+this.beautiful); }
}
问题二、类型转换
在main函数中创建上面的类,正常写法
Dog now = new Dog() {Name = "小黑"};
Console.WriteLine(now.Name);
使用类型转换
Animal now = new Dog() { Name = "小黑" };
Console.WriteLine(now.Name);