使用属性升级MyBank
访问修饰符
Java中的访问修饰符
Public 、protected、private
C#
Public公共的 访问级别最高
Private私有的 访问级别最低
访问修饰可以用来修饰字段(属性)和方法,用来限定类成员的访问级别
Student stu = new Student();
stu.userName = "";
stu.age = 0;
stu.show1();
stu.show2();
private string userName = "Tom";
public int age = 18;
public void show1()
{
Console.WriteLine("AAAAA");
}
private void show2()
{
Console.WriteLine("AAAAA");
}
This关键字(指定当前对象)
C#所有的对象都将创建在并脱管堆上
/// <summary>
/// 初始化学员
/// </summary>
/// <param name="name"></param>
public void SetName(string name)
{
this.userName = name;
}
public void Show()
{
Console.WriteLine("大家好:{0},今年:{1}",this.userName,this.age);
}
C#属性
1) 一个物体抽象出来,形成公共的类,减少代码量
2) 用方法保证数据的安全
做一个年龄的限制
private int age;
public string idCard;
/// <summary>
/// 得到年龄
/// </summary>
/// <returns></returns>
public int GetAge()
{
// 返回值
return this.age;
}
public void SetAge(int age)
{
if (age < 0 || age > 100)
{
this.age = 19;
}
else
{
this.age = age;
}
}
测试类
Student stu = new Student();
stu.SetAge(-10);
Console.WriteLine("年龄是:{0}",stu.GetAge());
stu.SetAge(35);
Console.WriteLine("年龄是:{0}", stu.GetAge());
Console.ReadKey();
用属性实现字段的封装
private string UserName;
快捷键(Ctrl + r + e)
Get访问器用来返回相应私有的字段属性,get访问器与方法相似,必须使用return返回字段值
Set访问器用来设置相应私有字段的值,set访问器类似于返回类型为void的方法
public int Age
{
get
{
return age;
}
set
{
if (value < 0 || value > 100)
{
this.age = 19;
}
else
{
this.age = value;
}
}
}
属性的数据类型
定义一个类中的属性,属性的数据类型必须与他所范文的字段类型一致(必须是整形)
属性的类型可以是一个类或者一个数组
属性的访问类型
属性访问类型分为三种:
1) 只读属性:只有Get
2) 只写属性:只有Set
3) 只读只写:Get+Set
字段和属性的区别?
通常字段是指private,在类的内部使用。讲指定属性为public,对外开发个,同常get或set提供访问安全,有效的范围保护
C#中的属性和方法?
C#中的属性set访问器和get访问器后面不能加“()”,因为访问器没有返回值
对象初始化
先创建一个Student对象在初始化
Stu.userName = “某某”;
对象初始化
Student stu = new Student(){username = “某某”};// 多个属性之间使用“逗号”隔开
面向对象(封装、继承、多态)
C#中-----封装
什么是封装:就是将东西打包
作用:隐藏类的内部细节,只对外暴露类的基本操作
好处:
1) 避免非法数据的赋值
2) 保证数据的完整性
3) 避免类内部发生修改时,导致整个程序发生变化
通过访问修饰符来实现
Public:公共的
Private:私有的
Protected:只有该类对象(自己)及子类对象可以访问(继承关系)
Internal:同一个程序集的对象可以访问
Protected Internal:访问限于当前程序集或派生自包含类的类型
比如说:一个人A为父亲,他的儿子B,妻子C,私生子D(注:D不在他家)
Public:地球人都知道,公开的
Private:只有A知道(隐私、私事,心事)
Protected:A,B,D(A和他所有儿子都知道,C他妻子不知道)
Internal:A,B,C知道(私生子D不知道)
Protected Internal:A,B,C,D都知道,其他人不知道
值传递和引用传递
Java中是如何数据传给方法的,通过参数的形式
int pay;// 税前工资
float taxRate = 0.1f;// 税率
float afterTax;//税后工资
Console.WriteLine("请输入税前工资:");
pay = int.Parse(Console.ReadLine());
if (pay <= 3500)
{
afterTax = pay;
}
else
{
afterTax = pay - (pay - 3500) * taxRate;
}
Console.WriteLine("税前工资{0}\n税后工资{1}",pay,afterTax);
Console.ReadKey();
修改后的
private static float GetPay(int pay, float taxRate)
{
float after;// 税后的工资
if (pay <= 3500)
{
after = pay;
}
else
{
after = pay - (pay - 3500) * taxRate;
}
return after;
以上是值传递
java中左右手换纸牌
三个abc
实现左右手换纸牌
引用传递
要想实现左右手换纸牌需要按引用传递的方式进行(需要使用ref关键字)
值传递(拿的是复制品)
值传递是将变量的值复制了一份,是方法的形参和实参的值相同,在调用方法中修改形参也只是对复制品做修改,并没有真正的改变实际参数的值
引用传递(拿的是原来参数的地址 关键字ref)
引用传递是将传递的对象引用复制给方法的形参,使被调用的方法直接对引用对象进行更改,会影响到原来的值