C#之入门总结_继承_06

继承就是对类的接受,接受其方法,属性.

在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如猫和狗都属于动物,在程序中便可认为猫和狗继承自动物,同理波斯猫和巴厘猫继承自猫,而沙皮狗和斑点狗继承自狗,这些动物之间会形成一个继承体系,具体如图


C#之入门总结_继承_06

prop +Tab*2 生成自动属性

ctor+Tab*2 快速生成构造方法

//property自动属性

//包含字段和属性

//在不做任何检验的时候可以使用自动属性使用自动属性可以不写字段

publicint Name { get; set; }

 

string.Contains(str)系统定义的查找在一个字符串中是否包含某个字符串的方法

 

自定义的查找在一个字符串中是否包含某个字符串的方法

staticbool IsConctains(string targetStr,string sourceStr)

        {

            //判断目标字符串与原字符串的长度关系

            //如果原字符串比目标字符串小那么没有比较的必要

            if (targetStr.Length<sourceStr.Length)

            {

                returnfalse;

            }

 

            // 根据观察都得出  原字符串 - 目标字符串 + 1 就是比较的次数

            for (int i = 0; i <targetStr.Length-sourceStr.Length+1; i++)

            {

                //遍历目标字符串

                for (int j = 0; j < sourceStr.Length; j++)

                {

                    //目标字符串的j原字符串的第 i+j的比较
C#之入门总结_继承_06

                    if (sourceStr[j] != targetStr[i+j])

                    {

                        continue;

                    }

                    //因为目标字符串大于1 所以次数减1就不用比较最后一个字符了

                    if (j==sourceStr.Length-1)

                    {

                        returntrue;

                    }

 

                }

            }

进入程序  

调用类

先走本类的构造方法

想回查找父类的空参构造方法 或者 其他构造方法

在实际开发过程中,某些方法的参数类型为引用类型,但是如果调用时传入的是值类型,此时需要进行装箱操作。同样当一个方法的返回值类型为值类型,但实际方法返回值为引用类型,那么就需要进行拆箱操作。简单来说,装箱就是将值类型转换为引用类型,拆箱就是将引用类型转换为值类型



class Program04
{
  static void Main(string[] args)
  {
   int num = 100;
   //将int类型变量num赋值给object的变量obj,发生装箱操作
   object obj = num;
   Console.WriteLine("obj对象的值为{0}", obj);
   //将object类型的对象obj赋值给int类型的变量num,发生拆箱操作
   num = (int)obj;
   Console.WriteLine("num的值为{0}", num);
   Console.ReadKey();
  }
}
装箱和拆箱过程本质上是数据存储在栈与堆之间变更,因此频繁的装箱、拆箱操作会影响运算效率,所以要尽量减少相关操作。

C#之入门总结_继承_06



 //is as关键字
                //is不会讲对象直接进行转化 会在转化之前 进行一次判断 如果类型匹配则返回true  类型不匹配 则返回false  然后需要根据返回值进行适当操作
                //bool ret = animals[i] is Dog;
                //if (ret)
                //{
                //    ((Dog)animals[i]).Bark();
                //}
                //else
                //{
                //    ((Cat)animals[i]).Bark();
                //}

                //as  
                //as 可以将animals[i]直接转化  转化成功  返回一个Dog实例  否则返回null


 Dog dog = animals[i] as Dog;
                if (dog !=null)
                {
                    dog.Bark();
                }

                Cat cat = animals[i] as Cat;
                if (cat != null)
                {
                    cat.Bark();
                }