继承是指一个对象直接使用另一对象的属性和方法
public class A
{
public A() { }
}
public class B : A
{
public B() { }
}
示范练习:
class Program
{
static void Main(string[] args)
{
person p = new person();
Teacher t = new Teacher ();
t.Name = "老牛最邪恶";
t.Age = 80;
t.Gender = '女';
t.SayHi();
Student stu = new Student ();
Console.ReadKey();
//继承-----
//老师 这个类叫子类 person这个类叫父类
//老师是派生类 父类是基类
}
}
//父类:
public class person
{
string _name;
public string Name
{
get {return _name;}
set {_name=value ;}
}
int _age;
public int Age
{
get{return _age;}
set{_age=value;}
}
char _gender;
public char Gender
{
get{return _gender;}
set{_gender =value;}
}
public void Show()
{
Console.WriteLine("我是人,别害怕");
}
}
//子类
public class Teacher :person //继承
{
public void SayHi()
{
Console.WriteLine("我是老师,别害怕,我叫{0},{1}岁了,{2}生" ,this.Name,this.Age,this.Gender );
}
}
//子类
public class Student:person //继承
{
public void SayHello()
{
Console.WriteLine("我是学生,别害怕");
}
}
里式转换
is的用法:
//列举:用if中is测试,如果可以则可以转换,如果不行则表示不能转换。
person p = new Teacher();
if (p is Teacher )
{
Teacher t = (Teacher)p;
}
Teacher t = (Teacher)p;//如果new的时候,new的是子类,那么在转换这个子类的时候可以
t.SayHi();
}
}
//下面需用set\get 定义person类
as的用法:person tea=p as teacher;
is和as 区别:
- is可以做as 做的事情,并且is不会报错是bool类型。
- as 也是转换,但是 如果转换不了 不报异常,返回来是null
- Is 转换,返回的是bool值,true就是能转换,false就不不能转换
练习
//随机生成 5类
// 然后 转换 调这个类方法
class Program
{
static void Main(string[] args)
{
Person[] per = new Person[10];
Random r = new Random();
//排队
for (int i = 0; i < per.Length; i++)
{
int num = r.Next(1, 7);//1-6
switch (num)
{
case 1: per[i] = new Person(); break;
case 2: per[i] = new Teacher(); break;
case 3: per[i] = new Student(); break;
case 4: per[i] = new ShuaiGuo(); break;
case 5: per[i] = new MeiLv(); break;
case 6: per[i] = new YeShou(); break;
}
}
//循环判断显示结果
for (int i = 0; i < per.Length; i++)
{
ShowType(per[i]);
}
Console.ReadKey();
}
//-------------------------------下面所有为调取函数和继承
//调取函数
public static void ShowType(Person p)
{
if (p is Teacher )
{
((Teacher)p).SayTeacher ();
}
else if (p is Student)
{
((Student)p).SayStudent();
}
else if (p is ShuaiGuo )
{
((ShuaiGuo)p).SayShuaiGuo();
}
else if (p is MeiLv )
{
((MeiLv)p).SayMeiLv();
}
else if (p is YeShou )
{
((YeShou)p).SayYeShou();
}
else if (p is Person )
{
//Person p1 = (Person)p;
//p1.Say();
((Person)p).SayPerson ();
}
}
}
// 下面是父类
public class Person
{
string _name;
public string Name
{
get { return _name; }
}
int _age;
public int Age
{
get { return _age; }
}
char _gender;
public char Gender
{
get { return _gender; }
}
public void SayPerson()
{
Console.WriteLine("我是人");
}
}
//下面是子类
public class Teacher : Person
{
int _salary;
public int Salary
{
get { return _salary; }
}
public void SayTeacher()
{
Console.WriteLine("我是老师");
}
}
public class Student : Person
{
string _id;
public string Id
{
get { return _id; }
}
public void SayStudent()
{
Console.WriteLine("我是学生");
}
}
public class ShuaiGuo : Person
{
public void SayShuaiGuo()
{
Console.WriteLine("我是帅哥");
}
}
public class MeiLv : Person
{
public void SayMeiLv()
{
Console.WriteLine("我是美女");
}
}
public class YeShou : Person
{
public void SayYeShou()
{
Console.WriteLine("我是野兽");
}
}