刚刚学到了类,那么就不得不聊一聊类中属性和字段。两者相似而却又有很大的差距。
访问修饰符:
1、什么是访问修饰符?
我的理解是:就是控制访问权限的,根据访问修饰符的不同,就会有不同的访问权限。
2、都有什么访问修饰符?
private:私有成员,在类的内部才可以访问。
protected:保护成员,该类内部和继承类中可以访问
public:公共成员,完全公开,没有访问限制
internal:当前程序内可以访问
字段:
首先谈谈个人理解:字段就是在类的内部使用,为了保护数据,所以一般访问修饰符都是private。
字段的创建:
注意:因为在一个程序中,会定义很多东西,所以为了区别出来哪个是字段,所以字段的命名一般都是以“_”开头。
public class Student
{
//字段
private string _name;//姓名
private char _gender;//性别
private int _age;//年龄
private double _chinese;//语文成绩
private double _math;//数学成绩
private double _english;//英语成绩
}
属性
思考一下:因为字段在类中都是private的访问修饰符,那么如果要调用,怎么办呢?那么接下来咱们就来聊一聊属性。
属性的创建:
注意:下面的内容是有字段也有属性的,详细请见注释。
public class Person
{
//字段
private string _name;
private int _age;
private char _gender;
//属性
public string Name
{
get { return _name; }
set { _name = value; }
}
public int Age
{
get { return _age; }
set { _age = value; }
}
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
}
get和set
get:为只读,故名思意,如果只有get而没有set的情况下,是只能字段读取,而不能修改字段的。
set:为只能修改,既如果只有set而没有get是只能修改字段不能读取字段的。
同理可得:如果二者都有,那么字段是既可以修改也可以读取的,
属性和字段
仔细观察,发现属性和字段不仅在命名上有差别,而且在访问修饰符上也有很大的差别。
发现:字段是private,而属性是public,所以给字段赋值,就需要通过属性来对字段进行操作。
属性和public字段的区别:
调用set方法为一个属性设值,然后用get方法读取出来的值一定是set进去的值嘛?
实行可以对设值、取值的过程进行非法值控制。比如年龄禁止设置负值,而字段则不能进行这样的设置,虽然一般情况下get 读值就是set设置的值,但是可以让get读取的值不是set设置的值。
构造方法
构造方法用来创建对象,并且可以在构造函数中对对象进行初始化。
构造函数举例:
public class student
{
public student(string name,char gender,int age,int chinese,int math,int englishi)
{
this._name = name;
this._gender = gender;
this._age = age;
this._chinese = chinese;
this._math = math;
this._english = englishi;
}
}
问答:
1、如果一个类不写构造方法,那么它有默认的构造方法嘛?
答:它有一个默认的构造函数,只不过参数是空。
2、在写一个类的构造方法时,可以不包含所有的字段嘛?
答:可以,写一个类的构造方法时,可以只包含一个字段,也可以包含所有字段。
3、在一个类中写个一个新的构造方法,那么之前默认的构造方法呢?
答:被覆盖掉了。所以如果写了一个新的构造方法,还想要一个无参数的构造方法,那么就需要重新写一个。
4、构造方法是否和普通方法那样可以重载?
答:构造方法和普通方法一样都是可以有重载的。
少壮不努力,老大徒伤悲,冲鸭!