03_C#学习_封装和类
2019-03-06 本文已影响0人
乖薯宝
--2019-03-06--
软件与快捷键
快捷键
软件:visual studio 2017
F1: 按键打开msdn学习;
F5: 开始调试
.cs: 后缀
ctr+F5 : 开始运行
ctr+k;ctr+c: 注释
ctr+k;ctr+u:取消注释
封装
-
C#规则:所有关键字都是由小写字母组成的,C#语言中,大小写是严格区分的。
-
封装
作用:隐藏对象信息,留出访问接口。
属性封装字段: 快捷键(CTRL+R+E)
包括get: 读访问器;和set: 写访问器。
可以对访问器作条件限制。 -
类
实例化对象--创建类名为child的类:Child xiaoming = new Child()
类有字段、属性和方法
- 字段:
private string _name;
- 属性:通过封装将字段定义成属性
public string Name { get => name; set => name = value; }
- 方法:
ublic void PlayBall();
- 访问修饰符类
- public 公共的:类中定义字段和方法前加public,可以在其他类中被访问
- private 私有的:只有.NET中应用程序或库才能访问,并且是默认选项
- protected:只能从其所在类和所在类的子类进行访问
- internal:只有在本类中才能访问
- 方法的重载
同一个类中,多个方法的名字相同但参数(类型或数量)不同。
//方法声明
public void EatSugar(string Sugar)
public void EatSugar(int count)
public void EatSugar(string Sugar, int count)
- 类的构造方法
- 作用:为属性赋值
- 如果没有定义显示的构造方法,会一个默认无参数的构造方法;如果定义了有参构造方法,则覆盖默认构造方法
- 只能用
new 方法名()
的形式调用构造方法,声明通常为public - 构造方法没有返回值类型,方法名必须与类名相同
//调用构造方法,实例化对象
Child xiaoming = new Child( "周星星");
//有参数构造方法
class Child(string name)
{
Name = name;
this.sex = sex; //this用在字段和形参重名
//this 当前对象,可以调用当前类的字段和方法
}
- 对象初始化器
其实是调用了类的无参数构造方法,要确保类中有无参数构造方法
Child child2 = new Child {Name="周星星",Age=5};
Console.WriteLine("我叫{0},今年{1}岁了",child2.Name,child2.Age);
- 值类型和引用类型
值类型 | 引用类型 |
---|---|
int | 类 (string) |
char | 数组 |
double | 接口 |
- 值类型:传值,创建副本,原变量不会被修改
- 引用类型:传地址,地址所指对象被改变,原变量所指对象也会改变
- ref:可以变成引用类型传参(定义和调用前都加ref,对象属性不能作为形参)
- out:用来输出结构(定义和调用前加out)
- 结构(struct)
struct Dog{
string _name;
public string Name { get => _name; set => _name = value; }
public void Sing()
{
Console.WriteLine("wangwang");
}
public Dog(string name)
{
_name = name;
}
}
和类的相同点:
1)结构和类一样可以定义字段、属性和方法
2)声明和实例化的代码相同,调用属性,方法的代码相同
不同点:
1)结构是值类型(类是引用类型)
2)不能给结构中字段赋初始值
3)结构中不能有自己定义的显示的无参数构造方法
4)构造方法必须给所有的字段赋值
5)结构可以不用实例化对象
- 枚举类型(enum)
enum Gender
{
男,女
}
1)枚举是值类型
2)枚举中不能定义字段属性和方法
3)枚举值是从0递增的整数,赋值可以用(Gender)0