zoukankan      html  css  js  c++  java
  • 基础的对象初始化解析

    using System;
    using System.Collections.Generic;
    using System.Text;
    namespace ConsoleApplication1 {
       
       class A {
           //调用到这个构造函数时:x=1,y=0
           public A() {
               //该函数在B类中被重载,因此输出 x=1,y=0
               Console.WriteLine("在A类的构造函数中");
               PrintFields();
           }
           public virtual void PrintFields() { }
       }
       class B : A {
           //派生类变量/静态成员的执行顺序优于基类
           //先变量,因此,x=1,y=0
           int x = 1;
           int y;
           //后构造函数,此时,先调用基类构造函数
           public B() {
               //运行到这里时,A类构造函数已经执行完毕
               y = -1;
               Console.WriteLine("在B类的构造函数中");
               //此时 x=1,y=-1
               PrintFields();
           }
           public override void PrintFields() {
               Console.WriteLine("x={0},y={1}", x, y);
           }
       }
        
        
        
        class Program 
       {
           static void Main(string[] args)
           {
               A a = new B();
               Console.ReadLine();
           }
       }
    }

    1.B继承A,请问a是A的实例还是B的实例啊?
    答:B的实例

    2.对象a可以调用A类中的方法吗?可以调用B的方法吗?
    答:不一定,如果是虚拟方法,并且在B类重载了A的虚拟方法,a将会调用B的同名方法,普通方法会调用A的方法,

    举例:
    class A
    {
    public void MethodA(){...}
    public virtual void MethodB(){...}
    }

    class A:B
    {
    public new void MethodA(){...}
    public override void MethodB(){...}
    }

    其中,B类重写了A类的普通方法MethodA,也重写了A类的虚拟方法MethodB,则:
    A a = new B();
    a.MethodA();// 将会调用A类的MethodA方法
    a.MethodB();// 将会调用B类的MethodB方法

    // 补充:
    为什么要把它的类型定义成A呢?这样做有什么好处?
    答:A是基类,B是A的扩展,像B这样的扩展类可以很多很多的,如(B1,B2,B3......),扩展类是不可预见的,也需你在编写程序的时候还没有B2这个扩展类,你又怎么能调用B2 b = new B2()来创建B2的对象呢?你只有用A a;的方法定义一个引用,然后把B2传给a对象,

  • 相关阅读:
    证券创新之翼 阿里金融云
    通过改变计算机策略来解决“只能通过Chrome网上应用商店安装该程序”的方法及模版文件下载
    VMware Workstation pro 12下载以及序列号
    Centos7下配置Tomcat7以指定(非root)身份运行
    apache2: Could not reliably determine the server's fully qualified domain name
    apache使用ssl数字证书
    苹果远程控制
    excel 组及分级显示制作教程
    Apache 性能优化
    Pigs and chickens
  • 原文地址:https://www.cnblogs.com/whyareyousocool/p/4332277.html
Copyright © 2011-2022 走看看