C#--继承

继承是指一个对象直接使用另一对象的属性和方法

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的用法:

 //列举:用ifis测试,如果可以则可以转换,如果不行则表示不能转换。
            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 区别:

  1. is可以做as 做的事情,并且is不会报错是bool类型。
  2. as 也是转换,但是 如果转换不了 不报异常,返回来是null
  3. 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("我是野兽");
        }
    }

这里写图片描述

猜你喜欢

转载自blog.csdn.net/aimin_com/article/details/80548903