zoukankan      html  css  js  c++  java
  • 20141214--C#父类,子类

    首要:

    子类 包含父类的所有的属性方法
    所有子类都可以直接转化成父类类型
    当父类类型变量里面存的是某个子类的对象的时候,才能转化成那个子类类型。

    父类与子类的装换:

    Ren r = new Ren();
    r = (Ren)m;//Man子类转换为Ren父类
    Ren m1 = new Ren();
    m1 = (Man)r;//转换成父类后再转换为子类时,只能转换成原先的子类, 不能转换成其他子类

    需要使用强制装换。

    private与protected:

    private 只可在当前类中作为成员变量使用 。

    protected 只可在当前类中或子类中作为成员变量 使用。

    当初始化子类的时候,都会先初始化一下父类,并且,执行父类中的构造函数。

    在父类中写入:

           private int hello;//private  只能在自己类里作为成员变量使用
            protected int world;//protected 只能在自己的类 以及子类里 作为成员变量使用
            public Ren()//构造函数(先执行)
            {
                world += 10;
                hello = 0;
           }
           public void ren1()
           {
                Console.WriteLine(world);
           }

    在一个子类中:

    class Man : Ren//加上“:Ren” 子类,表示Man是Ren的子类。
        {
             public Man()
            {
                world += 5; //在子类中可以使用protected的 变量。不可使用 private的变量。
            }
            public void man1()
            {
                Console.WriteLine(world);
            }
        }

    在另一个子类中:

    class women : Ren//加上“:Ren” 子类,表示women是Ren的子类。
        {
            public women()
            {
                world += 7;
            }
            public void women1()
            {
                Console.WriteLine(world);
            }
        }

    主函数

    static void Main(string[] args)
            {//子类 包含父类的所有的属性方法
                //所有子类都可以直接转化成父类类型
                //当父类类型变量里面存的是某个子类的对象的时候,才能转化成那个子类类型。
                  Ren rr = new Ren();
                rr.ren1();//打印结果是10
    
                Man m=new Man();
                m.man1();//打印结果是15
    
                women w = new women();
                w.women1();//打印结果是17
                         
    
                Console.ReadLine();
            }

    当在父类中加入 static时

          private int hello;//private  只能在自己类里作为成员变量使用
           protected static int world;//protected 只能在自己的类 以及子类里 作为成员变量使用
           //注意此处,与上文不同,添加了一个static 静态变量(受保护)
           public Ren()//构造函数(先执行)
           {
                world += 10;
                hello = 0;
          }
          public void ren1()
          {
                Console.WriteLine(world);
          }

    输出结果:

                Ren rr = new Ren();
                rr.ren1();//打印结果是10
    
                Man m=new Man();
                m.man1();//打印结果是25
    
                women w = new women();
                w.women1();//打印结果是42

    其原理:

    每次初始化(new)的时候被保护的变量都不会改变。

    10+15=25;(第一个10是初始化Ren时的改变)

    25+17=42;(25是初始化Man时的改变)

    父类与子类的方法调用:

    当子类父类中各有一个同名的方法时,new的是谁就调用谁的方法。

    父类:

    public void shuohua()
            {
                Console.WriteLine("说话:");
            }

    Man子类:

    public void shuohua()
            {
                Console.WriteLine("会英语");
            }

    注意两个是同名的方法。

    主函数中:

               m.shuohua();//调用的是Man中的方法    打印结果: 会英语
                rr.shuohua();//调用的是Ren中的方法   打印结果: 说话:
    
                rr = (Ren)m;//把Man类的m强制转换成Ren类。
                rr.shuohua();//调用的是Ren中的方法   打印结果: 说话:
    
                m = (Man)rr;//把Ren类rr强制转换成Man类。
                m.shuohua();//调用的是Man中的方法   打印结果: 会英语

    image

  • 相关阅读:
    C# 微信小程序模板消息---发送
    (转)python的 __init_, __call__, __new__ 详解
    (转)[Python]实例方法、类方法、静态方法
    (转)Python——gRPC详解及实战避坑方案(下)
    (转)Python——gRPC详解及实战避坑方案(上)
    (转)pika详解(五)登录认证及connectionParameters
    (转)pika详解(四) channel 通道
    (转)pika详解(三)SelectConnection及其他Connection
    (转)pika详解(二) BlockingConnection
    (转)pika详解 (一)
  • 原文地址:https://www.cnblogs.com/Tirisfal/p/4162577.html
Copyright © 2011-2022 走看看