一.C#关键字扩充解释:
1. new :
1)开辟空间
2)调用构造
3)实例化对象
2. this:
当前类的实例,用来区分入参和成员变量
3. void
void修饰的方法表示返回值类型为空,并不代表没有返回值
二.构造方法:
1.构造函数
特点:
方法名与类名相同
没有返回值类型
主要完成对象的初始化工作
注:不能将构造函数定义为void
根据普遍的经验,我们在进行开发时,一般不在构造函数中进行类的初始化以外的事情,不要尝试显示地调用构造函数
2.无参构造
语法:
访问修饰符 类名()
{
//方法体
}
代码示例:
public Book() { }
3.带参构造函数
语法:
访问修饰符 类名(参数列表)
{
//方法体
}
参数列表一般用来给类的属性赋值
优点:
灵活性更好
通过参数来动态控制对象的特征
示例代码:
public Book(int price, string author, string name)
{
//当前类的实例 ,用来 区分入参 和成员变量。
this.price = price;
this.author = author;
this.name = name;
}
4.隐私构造函数
在没有手动编写构造时,系统会给我们自动生成一个无参构造
为什么系统要自动生成无参构造?
是为了给将来给高级框架,高级框架在底层可以通过无参构造给我们的类创建对象。
三.方法重载
1.构造函数重载
public class Player
{
//构造函数也可以构成重载
public Player()
{
}
public Player(int age)
{
}
}
2.方法重载
特点:
方法名相同
方法参数类型不同或者参数个数不同
在同一个类中
需要注意,方法名及参数列表相同的方法,仅是返回值类型不同,不能称为方法重载
public void Say() { }
public string Say(int age)
{
return "1";
}
public void Eat(int age,string name)
{
}
public void Eat(string name, int age)
{
}
4.模仿Console系统类的WriteLine方法的可变参数数量传入
public class MagicClass
{
//param 参数 params 参数集合 可变参数
public void Say(params object[] arg)
{
}
}
:方法重载不仅能避免命名的麻烦,还能使调用者不必判断方法名就可直接调用
四.对象间的交互
1.概述:
在面向对象的世界里,一切皆为对象
对象与对象相互独立,互不干涉,但在一定的外力的作用下,对象开始共同工作
每个类都有自己的特性和功能,我们把它们封装为属性和方法
对象之间通过属性和方法进行交互
可以认为方法的参数及方法的返回值都是对象相互传递的消息
2.实例
//遥控器
public class Contol
{
public void Open(Tv tv)
{
tv.Open();
}
public void Close(Tv tv)
{
tv.Close();
}
public void ChangeChannel(Tv tv,string channelName)
{
tv.ChangeChannel(channelName);
}
}
/// <summary>
/// 电视机
/// </summary>
public class Tv
{
//维护一个状态
bool state = false;//关闭
public void Open()
{
if (state==false)//关闭的
{
state = true;//状态切换到开 机状态
Console.WriteLine("电视机打开啦!!!!!~~~~~");
}
}
public void Close()
{
if (state == true)//开着的
{
state = false;//状态切换到关 机状态
Console.WriteLine("电视机关闭啦!!!!!~~~~~");
}
}
public void ChangeChannel(string channelName)
{
if (state==true)
{
Console.WriteLine("您已经成功切换到"+channelName);
}
}
}
static void Main(string[] args)
{
//01.买一个电视机
Tv tv = new Tv();
//02.买一个遥控器
Contol control = new Contol();
//03.进行操作
control.Open(tv);
control.ChangeChannel(tv, "凤凰卫视");
control.Close(tv);
}
经验:
一旦程序报错"未将对象引用设置到对象的实例",我们就可以认定某个对象没有实例化。此时可以通过错误代码找到是哪个对象没有实例化,进行相应修改即可
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有