【C#】——属性和字段

6 篇文章 0 订阅

刚刚学到了类,那么就不得不聊一聊类中属性和字段。两者相似而却又有很大的差距。

访问修饰符:

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、构造方法是否和普通方法那样可以重载?

答:构造方法和普通方法一样都是可以有重载的。

少壮不努力,老大徒伤悲,冲鸭!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值