面向对象之父类变量指向子类实例对象分析
父类
public class person
    {
        
        public static string markup;
        static person()
        {
            markup = "markup";
        }
        //无参数构造函数
        //public person()
        //{
        //    Console.WriteLine("调用person构造函数");
        //}
        public person(int parage, string paraname, string parahobby)
        {
            age = parage;
            name = paraname;
            hobby = parahobby;
        }
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private int age;
        public int Age
        {
            get { return age; }
            set { age = value; }
        }
        private string hobby;
        public string Hobby { get; set; }
        public void SayHi()
        {
            Console.WriteLine("Person SayHi Method");
        }
    }
子类
    public  class Student:person
    {
        public string No;
        //调用无参构造函数,同时调用有参数构造函数的方式
        public Student():base(123,"sdf","sd")
        {
            Console.WriteLine("调用Student的无参数构造函数");
        }
        public Student(string s):this()
        {
            Console.WriteLine("调用Student的有参数构造函数");
        }
        public void SayHi()
        {
            Console.WriteLine("大家好,我是{0},{1},{2}", this.Name, this.Age, this.Hobby);
        }
        
    }
person stu = new Student("ss");
1、父类变量可以指向子类的实例对象,反之则不可以。
2、当创建一个子类对象时,如果是它的父类变量接收的它的子类对象,那么它只能调用父类的成员;(此过程中,此父类变量指向了父类成员,并没有指向这个子类成员);
3、例外情况:通过重写(override),父类变量可以调用子类的重写方法;
4、子类继承父类的所有成员,但是只能访问父类的非私有成员;

Student onestu = new Student("ss");
1、当创建一个子类对象时,如果声明的变量也是子类类型;调用时,首先查找子类中是否有该成员,有则调用;如果没有,到它的父类中寻找,有则调用
 person stu = new Student("ss");
            Student onestu = (Student)stu;
            onestu.SayHi();
1、强制类型转换成子类,重新指向子类的实例对象
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号