深入类的方法
2018-06-17 22:32:18来源:未知 阅读 ()
一.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); }
经验:
一旦程序报错"未将对象引用设置到对象的实例",我们就可以认定某个对象没有实例化。此时可以通过错误代码找到是哪个对象没有实例化,进行相应修改即可
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Mysql下中文乱码的解决方法 2020-02-26
- windows系统中mysql自动备份的方法 2020-02-26
- MySQL中使用WHERE子句的方法 2019-10-25
- MySQL的默认密码的修改方法 2019-10-25
- 关于php开启错误提示的总结 2019-10-09
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash