using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ClassInit
{
internal class Program
{
static void Main(string[] args)
{
int fff = 123;
string eee = "aaa";
InitFunction inf = new InitFunction(fff, eee);
inf.UserFunction();
inf.aa = 456;
inf.bb = "zzz";
inf.UserFunction();
// 实例化继承的类
SenFunction SF = new SenFunction(fff, eee);
SF.UserFunction();
SF.PrintArgs();
Console.ReadKey();
}
}
public class InitFunction
{
// 定义的全局变量,供在类方法中传值
public int aa;
public string bb;
// 构造函数和类同名,构造函数的参数即为类初始化时需要的参数,构造函数在类初始化时自动执行
public InitFunction(int aaa, string bbb)
{
Console.WriteLine("现在开始执行构造函数");
aa = aaa;
bb = bbb;
Console.WriteLine("执行基类第一个构造方法");
}
// 类方法,需要实例化后才能调用
public void UserFunction()
{
Console.WriteLine($"aa={aa}; bb={bb}");
}
// ~开头的函数称为析构函数,析构函数在类在内存中被销毁时自动执行,类似python的__del__方法
~InitFunction()
{
Console.WriteLine("开始执行析构函数");
}
}
public class SenFunction : InitFunction
{
// 继承的类如果的有构造函数的话,通过这种方式继承基类的构造函数
public SenFunction(int aaa, string bbb) :base(aaa, bbb)
{
aa += 1;
Console.WriteLine("执行子类构造方法");
}
public void PrintArgs()
{
Console.WriteLine($"from SenFunction aa={aa}; bb={bb}");
}
}
}
执行结果
现在开始执行构造函数
执行基类第一个构造方法
aa=123; bb=aaa
aa=456; bb=zzz
现在开始执行构造函数
执行基类第一个构造方法
执行子类构造方法
aa=124; bb=aaa
from SenFunction aa=124; bb=aaa