构造函数、方法重载、属性

构造函数是类的一种特殊方法,其实它就是对类进行初始化。构造方法与类同名,没有返回值,也不需要void。每次创建类的实例都会调用它,即在new的时候调用。

所有类都有构造方法,如果你不编码则系统默认生成空的构造方法,如果你有定义的构造方法,那么默认的构造方法就会失效了。

这里所谓的空的构造方法,其实什么也不做,只是为了让你能顺利地实例化而已。

Cat cat=new Cat();

上面这句代码,new后面的Cat()其实就是构造方法。这里是一个空的构造方法,只是为了让程序能够顺利实例化。再看下面的一句:

Cat cat=new Cat("小猫");

这时Cat("小猫")是构造方法,在类进行实例化的时候,也就是在小猫出生的时候,我们给他起名叫做“小猫”。

为了达到如上目的,在小猫出生的时候,就为它初始化一个“小猫的名字”,我们需要在类中,添加一个构造方法和重载一个方法。

private string name=""; public Cat(string name) { this.name=name; } public Cat() { this.name="小猫"; }

通过方法的重载,我们在原先功能的基础上,增添了新的功能。
下面再简单谈谈属性。
属性是一个方法或一对方法,但在调用它的代码看来,它是一个字段,即属性适合于以字段的方式使用方法调用的场合。

属性有两个方法get和set。get访问器返回与声明的属性相同的数据类型。表示的意思是调用时可以得到内部字段的值或引用;

set访问器没有显式设置参数,但它有一个隐式参数,用关键字value表示,它的作用是调用属性时可以给内部的字段或引用赋值。

用法如下:

private int ShoutNum=1; public int ShoutNum { get {return shoutNum;} set {shoutNum=value;} }

上面代码表示我们可以直接读出变量ShoutNum初始时的值1,同时,我们也可以重新为它赋新值。我们新赋的值会覆盖原先的初值。



在 C# 中,构造函数的调用是可以重载的。这意味着你可以定义一个构造函数,然后在派生中提供多个不同的构造函数,这些构造函数会隐式地调用基构造函数。这种方式通常用于初始化基属性或者执行一些通用的设置操作。 当你创建一个派生的对象时,如果没有显式指定哪个构造函数来调用,编译器会选择最适合当前上下文的那个构造函数。如果在派生中定义了一个或多个构造函数,它们可以接受不同数量或型的参数,以便处理多种初始化场景。 例如: ```csharp public class BaseClass { public int Value { get; set; } // 调用基无参构造函数 public BaseClass() => Value = 0; // 定义一个带有一个参数的构造函数,用于初始化Value public BaseClass(int value) => Value = value; } public class DerivedClass : BaseClass { // 可以在DerivedClass中定义新的构造函数,它会自动调用BaseClass的某个构造函数 public DerivedClass(string name) : base(name.Length) // 或者直接base() { // 这里可以进一步初始化DerivedClass特有的字段 } } ``` 在这个例子中,`DerivedClass` 的 `DerivedClass(string name)` 构造函数会根据传入的 `name` 参数,选择合适的 `BaseClass` 构造函数(在这种情况下可能是默认的无参构造函数或 `BaseClass(int value)`)。当实例化 `DerivedClass` 对象时,无需显式指定哪个构造函数使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值