c#笔记(九)——面向对象

构造方法
            构造方法,是与类名相同,并且无返回值,不加void
            构造方法的主要作用是创建对象并给对象赋初值
            不带有参数的构造方法称为默认构造
            构造方法可以带有参数进行重载, 如果要给对象赋具体的初始值时
            可以在类里面写出带有参数的构造方法并调用
            如果在类里面没有构造方法,当我们创建对象时,系统会自动生成一个默认构造供使用
            如果类里面有带有参数的构造方法,调用默认构造时,必须显示的把默认构造写出来
 
 面向对象三大特性:封装、继承、多态
             封装
            我们在创建对象时,不希望外部人为的来破坏对象所包含的字段的值,此时就需要把数据封装起来
            具体的做法是:把成员字段用private字段修饰,这样外部就无法拿到字段并修改所存储的数据
            同时把私有的字段改成属性,通过属性来修改字段的值,创建对象并初始化对象时
            可以用带有参数的构造方法给字段赋初始值,把字段写成私有后,虽然在外部不能使用,但是在类的内部可以使用、
            即类内部的方法可以调用类里面的私有字段
            继承
            当一个子类继承父类,会把父类里面的成员继承过来,
            父类里面的成员如果用public修饰,称为共有继承,用private修饰称为私有继承
            公有继承的成员在任何地方都能使用
            私有继承过来的成员只能在分类内部使用,在类的额外面不能使用
            protected继承过来的成员只能在父类和子类里面使用,类的外面不能使用
//里氏转换
            SmallDog small = new SmallDog();
            BigDog big = new BigDog();
            stu.WalkDog(big);
            stu.WalkDog(small);
            //在处理数据时,为了使所处理的数据,类型达到统一,
            //此时会把数据的类型统一写成父类的类型,这样就可以吧子类的对象直接赋值给父类
            //里氏转换的第一个原则:把子类对象赋值给父类,但是调用类里面的成员时只能调用父类里面的子类里面的调用不到
            Dog dog = small;
            //里氏转换的第二个原则;把父类的对象转成子类,as
            BigDog s =dog as BigDog;
            if (s!=null )
            {
                s.BigDogBark();
            }
//把值类型转换成引用类型的过程称为装箱
            object obj = a;
            Console.WriteLine(obj);
            //把引用类型转换成值类型称为拆箱
            int c=(int )obj;
多态
virtual override
原文地址:https://www.cnblogs.com/ningyongbin/p/5922222.html