2.封装
封装:是指隐藏对象的属性、方法和方法的实现细节封装,封装后程序又对外提供访问方式。
单词预习:
encapsulation 封装 constructor 构造 private 私有的 method overload 方法重载
通过提供不同的访问器,可以将属性分为3类:只读、只写、读写
构成方法重载的条件: 在同一类中,方法名相同,参数类型或个数不同
1.定义属性
public class Customer { public string name; //保存姓名 private int age; //保存年龄(0~100)岁(字段改为私有,并且首字母小写,属性首字母大写) public int Age { get{return age;} //只读访问器 set{ if(value>=0&&value<=100) { age=value; } else { age=18; Console.WriteLine("年龄超出范围,默认为18岁。"); //只写访问器 } } } }
2.方法重载
概念:同一个类中多个方法使用同一个名字,该方法就被称为“重载方法”。当一个重载方法被调用时,C#会根据参数的个数和类型自动调用最恰当的方法来执行。
构成方法重载的条件有3个:
-
在同一类中
-
方法名相同
-
参数的类型或个数不同
namespace 方法重载D1 { public class Computer { //实现两个整数的相加 public int Add(int num1, int num2) { Console.WriteLine("实现两个整数的相加:"); return num1 + num2; } public int Add(int num1, int num2,int num3) { Console.WriteLine("实现三个整数的相加:"); return num1 + num2+num3; } public double Add(double num1, double num2, double num3) { Console.WriteLine("实现三个小数的相加:"); return num1 + num2 + num3; } public double Add(double num1, double num2) { Console.WriteLine("实现两个小数的相加:"); return num1 + num2; } } } namespace 方法重载D1 { internal class Program { static void Main(string[] args) { Computer com = new Computer(); com.Add(1,2,3.3); //两个整数,一个小数 com.Add(1,2,6); //三个整数 com.Add(1, 2.2); //一个整数,一个小数 } } }
运行结果:
3.构造方法
-
构造方法的名字必须与定义它的类名完全相同,并且没有返回类型。
-
构造方法是在使用new关键字创建对象时系统自动调用的。
-
构造方法是在初始化对象时给对象成员赋初始值的。
4.封装的应用
例如,DBHelper类就是一个封装类的例子
namespace Family_money { public class DBHelper { public static string connstr = "Data Source=.;Initial Catalog=Family;Integrated Security=True"; public static SqlConnection conn; public static void Initconn() { conn = new SqlConnection(connstr); conn.Open(); } //增删改 public static bool ExecuteNonQuery(string sql) { Initconn(); SqlCommand cmd = new SqlCommand(sql,conn); int result = cmd.ExecuteNonQuery(); conn.Close(); return result > 0; } //查询 public static DataTable GetTable(string sql) { Initconn(); //适配器 SqlDataAdapter dap = new SqlDataAdapter(sql,conn); //数据集 DataSet ds = new DataSet(); dap.Fill(ds); return ds.Tables[0]; } //聚合函数 public static object ExecuteScalar(string sql) { Initconn(); SqlCommand cmd = new SqlCommand(sql,conn); object result = cmd.ExecuteScalar(); conn.Close(); return result; } } }
将你需要的功能封装成类,当你需要在主方法中使用时直接调用即可,不会使得主方法太臃肿