封装
封装是oop的特征这一。将用户不必了解的实现细节隐藏。保护数据的完成性。和封装紧密相关的概念是数据保护,使用访问修饰符实现。
public,公共成员可从对象及任何派生类访问。
private,只能由定义它的类访问
protected,只能由定义它的类和派生类访问。
这样用户就不能直接改变或获取底层的值
类
类类型是C#里基本的数据类型,由字段数据,构造函数,属性,方法,事件等构成的自定义类型。将数据相关功能集合在类定义中,我们就可以依照现实生活中的实体来设计软件。
字段
字段很少定义为公共的(public)。为了保护数据的完整性,最好将字段字义为私有的,或者是受保护的。然后定义一个属性访问和修改方法字段值。
常量,如果不希望其它开发人员改变代码中的这个值,可以使用常量。public const double PI=3.14。常量字段隐匿静态
的。
只读字段不能在赋初值后改变,public readonly double PI。
属性
//只读属性
public string name{get{ return _name;}}
//只写属性
public int age{set{ return _age}
//自动属性
public int age{set;get;}
new
使用new关键字返回的是一个指向堆上对象的引用,而不是对象本身。如果在方法作用域中将引用变量声明为本地变量,这个引用变量保存在栈内,以供应用程序以后使用。
//在托管堆创建一个新的Car对象。返回一个对这个对象的引用。
Car refToMyCar=new Car();
值类型是分配在栈上,而从来不会放在托管堆上。只有在创建类的实例时,才会在堆上分配。
构造函数
把新对象分配到内存中,确保所有字段数据都设置为正确的默认值
this
提供对当前对象的访问。解决当前传入参数的名字和类型相同的情况。
static
字义静态成员。这样就可以直接从类级别而不是对象引用调用。
静态方法一般是非常普遍的项。静态数据分配一次并且在相同类型的所有对象之间共享。
public class SavingsAccount
{
public static double currBalance;
public void ShowcurrBalance() {
Console.WriteLine(currBalance);
}
}
SavingsAccount.currBalance = 101.1;
SavingsAccount sa = new SavingsAccount();
sa.ShowcurrBalance();
SavingsAccount sa2 = new SavingsAccount();
sa2.ShowcurrBalance();
Console.ReadKey();
//101.1
//101.1
在构造函数中为静态数据赋值,每次新建对象的时候,值会被重置。
SavingsAccount.SetcurrBalance(1.12);
SavingsAccount sa = new SavingsAccount(1.1);
sa.ShowcurrBalance();
SavingsAccount sa2 = new SavingsAccount(33.4);
sa2.ShowcurrBalance();
Console.ReadKey();
public class SavingsAccount
{
public static double currBalance=11.0;
public SavingsAccount(double balance) {
currBalance = balance;
}
public static void SetcurrBalance(double balance) {
currBalance = balance;
}
public void ShowcurrBalance(){
Console.WriteLine(currBalance);
}
}
//1.1
//33.4