Animal脚本
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 继承
{
class Animal
{
private string name;
private int age;
private char gender;
//公有的属性是可以被继承的
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
public char Gender
{
get
{
return gender;
}
set
{
gender = value;
}
}
//子类在继承父类的时候 父类中的无参构造一定要显示的写出来 因为在实例化子类的时候
//在父类中为什么要显示的写出来无参构造?
//在类中如果出现了构造方法 那么就会把隐式的无参构造给覆盖掉
public Animal()
{
}
//构造方法是不能被继承的
//所有公有的方法是可以被继承的 说法是错误的
//因为构造方法不可以被继承
public Animal(string name, int age, char gender)
{
this.name = name;
this.age = age;
this.gender = gender;
}
//公有的方法可以被继承
public override string ToString()
{
return string.Format("名字:{0},年龄{1},性别:{2}", Name, Age, Gender);
}
public void Eat()
{
Console.WriteLine("动物在吃食物");
}
}
}
Cat脚本
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 继承
{
//class 子类:父类{} 这样就形成了继承关系
class Cat:Animal
{
public Cat()
{
}
public Cat(string name)
{
this.Name = name;
}
//base 维系了父子类之间的继承关系
public Cat(string name, int age, char gender):base(name, age, gender)
{
}
public new void Eat()
{
Console.WriteLine("猫在食物");
}
}
}
Dog脚本
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace 继承
{
class Dog:Animal
{
public Dog()
{
}
public Dog(string name, int age, char gender)
{
this.Name = name;
this.Age = age;
this.Gender = gender;
}
}
}
Program
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 继承
{
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat("小花", 2, '母');//执行的是base的纽带
Console.WriteLine(cat);//执行的是打印的过程
cat.Name = "花花";
Console.WriteLine(cat.Name);
Console.WriteLine(cat);
Dog dog = new Dog("小花", 2, '母');
Console.WriteLine(dog);
cat.Eat();
}
}
}