zoukankan      html  css  js  c++  java
  • 关于构造函数


    构造函数的作用是根据参数不同来创建一个不同的实例对象,现在我想介绍一下实例对象的过程,我们都知道如果没有说明继承那个类,那么一个类默认继承的是System.Object类。所以如果是一个指明了继承哪个类,那么至少它继承两个类。

    现在开始介绍构造函数,构造函数是没有返回类型的啊,不知道这个大家知道不。主要还是通过代码会更清楚吧,下面开工代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        public class Write
        {
            public  Write()
            {Console.WriteLine("先执行");}//这个默认的情况下是省略的,现在为了明显期间 我就添上了,下同
        
        }
    
        public class ReWrite:Write
        {
            public  ReWrite()
            {Console.WriteLine("后执行"); }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                ReWrite rw = new ReWrite(i, j);
                Console.ReadKey(); 
            }
        }
    }

    这个的执行过程是System.Object方法,Write方法,ReWrite方法。无论是否有继承存在 Object是必须执行的 而且是先执行的。如果不行的话 我们可以在每个函数中添加一个Console.WriteLine("******");主要就能看出那个先执行了。

    其实我想介绍的重点不是这个是下面一个。请看代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        public class Write
        {
            public Write()
            { }
            public Write(int i)
            {
                Console.WriteLine("{0}", i);
            }
            public Write(int i, int j)
            {
                Console.WriteLine("{0}和{1}", i, j);
            }
    
        }
    
        public class ReWrite : Write
        {
            public ReWrite()
            { }
            public ReWrite(int i)
            {
                Console.WriteLine("{0}", i);
            }
            public ReWrite(int i, int j)//{replace}
            {
                Console.WriteLine("{0}和{1}", i, j);
    
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                int i = 3, j = 4;
                ReWrite rw = new ReWrite(i, j);
                Console.ReadKey();
            }
        }
    }

    这个执行顺序大家应该很明白了,是先执行object方法,然后执行Write()方法。最后执行ReWrite(i, j);方法。但是如果我想执行Write(i)方法怎么办呢 其实很简单

    只需要把//{replace}改成base(i)或this(1)就OK了

    具体base和this的用法在下一篇提到;
  • 相关阅读:
    使用iText 7读取PDF文件中的文本和图片
    登记或取消登记盈亏库存日记账行数量
    uni-app(未完)
    javaScript的基本优雅写法
    ModuleFederation-模块联邦
    typescript
    img标签src图片路径根目录问题
    开源工具分享
    软件缺陷的度量、分析和统计
    MIT6.824 2020 Lab2 A Raft Leader Election
  • 原文地址:https://www.cnblogs.com/lzhp/p/2680800.html
Copyright © 2011-2022 走看看