C#基础-面向对象-封装
封装
命名空间
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp6
{
class BankCount
{
public string cardid;
public double dMoney;
public string name;
//两个构造函数,一个有参,一个无参
public BankCount()
{
}
public BankCount(string _cardid,double _dMoney,string _name)
{
this.cardid = _cardid;
this.dMoney = _dMoney;
this.name = _name;
}
}
}
using System;
namespace ConsoleApp6
{
class Program
{
static void Main(string[] args)
{
BankCount bcount = new BankCount("10086", 100, "Chale");
Console.WriteLine("存款金额:{0}", bcount.dMoney);
Console.WriteLine("取款金额:");
double d = Convert.ToDouble(Console.ReadLine());
bcount.dMoney = bcount.dMoney - d;
Console.WriteLine("剩余金额:"+bcount.dMoney);
}
}
}
上面的程序需要修改,为了保证数据的安全性,不让外面程序对文件直接修改。对字段进行封装,封装就是不让字段直接暴露在外直接访问或设置
为了保证数据的安全性,对字段进行封装,封装就是不让字段直接暴露在外直接访问或设置
提供一种机制在字段赋值的时候进行检查,属性。通过属性对这个字段进行访问或设置
// 修改为私有字段,所以不能在外部对这个字段进行访问
private string cardid;
private double dMoney;
private string name;
下面讲一下属性应用
一般我们在外部可以直接对属性进行操作,所以它的访问权限是public
下面代码就是表示访问cardid和设置cardid
public string Cardid
{
get // 表示在访问属性时,所对应的字段
{
return cardid;
}
set // 隐式参数value,表示赋值的数据
{
cardid = value;
}
}
对属性可以进行基本判断,程序如下:
public double DMoney{
get{
return dMoney;
}
set{
if (value < 0){
dMoney = 0;
}else{
dMoney = value;
}
}
}
修改后代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp6
{
class BankCount
{
// 为了保证数据的安全性,对字段进行封装,封装就是不让字段直接暴露在外直接访问或设置
// 提供一种机制在字段赋值的时候进行检查,属性。通过属性对这个字段进行访问或设置
// 修改为私有字段,所以不能在外部对这个类的字段进行访问
private string cardid;
private double dMoney;
private string name;
// 一般我们在外部可以直接对属性进行操作,所以它的访问权限是public
public string Cardid
{
get // 表示在访问属性时,所对应的字段
{
return cardid;
}
// 账号初始化后就不能修改,所以这边把设置删去,防止账号被修改
//set // 隐式参数value,表示赋值的数据
//{
// cardid = value;
//}
}
public double DMoney
{
get
{
return dMoney;
}
set
{
if (value < 0)
{
dMoney = 0;
}
else
{
dMoney = value;
}
}
}
public string Name
{
get
{
return Name;
}
set
{
name = value;
}
}
//两个构造函数,一个有参,一个无参
public BankCount()
{
}
public BankCount(string _cardid,double _dMoney,string _name)
{
this.cardid = _cardid;
this.dMoney = _dMoney;
this.name = _name;
}
}
}
using System;
namespace ConsoleApp6
{
class Program
{
static void Main(string[] args)
{
BankCount bcount = new BankCount("10086", 100, "Chale");
Console.WriteLine("存款金额:{0}", bcount.DMoney);
Console.WriteLine("取款金额:");
double d = Convert.ToDouble(Console.ReadLine());
bcount.DMoney = bcount.DMoney - d;
Console.WriteLine("剩余金额:"+bcount.DMoney);
// bcount.Cardid = "10089"; //账号不能修改,需要修改代码,可以去掉属性的set就能防止修改
}
}
}