C# 面向对象 字段 方法 属性

面向对象
        1、面向过程------>面向对象
        面向对象是由面过程演变而来
        面向过程:面向的是完成这件事的过程,强调的是完成这件事的动作

        举例:把大象塞进冰箱里
        1、打开冰箱门
        2、把大象塞进去
        3、关闭冰箱门

        孙全   瘦小   矮  
        孙全需要踩着小板凳打开冰箱门
        孙全找翟盼盼帮忙把大象塞进冰箱里
        孙全踩着板凳关闭冰箱门

        翟盼盼   190cm   力气非常大
        翟自己就能打开冰箱门
        翟自己将大象塞进冰箱里
        翟自己关闭冰箱门

        总结:如果我们用面向过程的思想来解决这件事,当执行这件事的人
        不同的时候我们需要为每不同的人量身定做解决这件事的方法。

        面向对象:就是找个对象帮你做事。
        例如:
        把大象塞进冰箱里

        冰箱门可以被打开
        大象可以被塞进冰箱
        冰箱门可以被关闭


        以上为面向对象的方法,忽略任何人的存在(不需要考虑任何条件),任何人都可以调用这个方法来完成这件事。
        面向对象:意在写出一个通用的代码,屏蔽差异。
       
        我们在代码中描述一个对象,通过描述这个对象的属性和方法,对象必须是看的见摸的着的,不能有范围性的,必须是指定的实物。
        例如:
        1、灯:属性和方法
        属性:
        外形:长的
        亮度:500W
        颜色:白的
        品牌:XXXXX
        方法:发光(动词)
       
        2、电风扇
        属性:
        外形:三个扇叶
        颜色:白色
        品牌:钻石
        方法:转动,扇风

        对象的共性:
        我们把这些具有相同属性和相同方法的对象进行进一步的封装,抽象出来,类这个概念。
        类是模子,确定对象将会拥有的特征(属性)和行为(方法

       
        对象是根据类创建出来的。
        举例:好比说类就是一座盖大楼的图纸,实实在在的楼房就是根据这个图纸盖出来的,这个楼房就是这个图纸的对象。
                    因为可以拿这个图纸盖很多这种楼房。先有图纸才有的楼房(根据图纸建楼房)
        例如:
        类:人类(包含:共性的属性:姓名,性别,身高,年龄.......。共性的方法:吃,喝,拉,撒,睡........)
        人类下的对象:孙全,张三,李四,赵五......

        clss类下有三个种:
        1、字段:
命名前加下划线       首字母必须小写,字段作为开辟空间存储数据的作用        字段只能在当前类下使用,出了这个类就访问不到了,字段不可直接赋值,是由属性接收判定后再由属性赋值给字段
        2、属性:命名前不加下划线     首字母必须大写,属性的作用是限定字段赋值范围        属性作为接收后判定是否在限定范围内,然后再将正确的值赋值给字段,接收时必须是先new一个对象,再由对象.属性赋值;
                属性中有两个方法
                1、get{return _字段命名;}//获取****可以在此方法中判定对象赋值是否在范围内,但是必须在[return _字段命名;] 之前判定。
                2、set{_字段命名=value;}//设置*****也可以在此方法中判定对象赋值是否在范围内,但是也必须在[_字段命名=value;]之前判定。
        3、方法:命名前不加下划线     字母全大写      可将字段中的数据输出。

        属性:
        属性的作用就是保护字段、对字段的赋值与取值进行限定。
        属性的本质就是两个方法,一个叫get(),另一个叫set()。
        属性中有以下三种情况:
        1、既有get(),也有set()我们称之为可读可写属性。
        2、只有get(),没有set()我们称之为只读属性。
        3、没有get(),只有set()我们称之为只写属性。
       
        举例:

        写一个类******这个类必须新建类,不可与Main函数上面的类写在一起******
       
        clss Person(类名)(首字母大写其他单词首字母也大写)
        {
                //private 表示私有的。只能在当前类的内部进行访问,出了这个类就访问不到了。
                //public  表示公开的,公共的。
                private string _name;//字段---首字母必须小写,且前面必须加下划线(姓名)****此项为字段作为开辟空间存储数据的作用****
                public string Name//属性---首字母必须大写,且前面不需要加下划线****此项为属性,属性的作用是限定字段赋值范围的*****
                {
                        get{return _name;}//获取姓名---返回字段获取的姓名
                        set{_name=value;}//设置姓名---属性将姓名赋值给字段
                }
                private int _age;//(年龄)
                public int Age//可以在get里面判定,也可以set里面判定。
                {
                        get{
                                if(_age>100||_age<0)
\                                {
                                        return _age=0;
                                }
                                return _age;}
                        set{_age=value;}
                }
                private cher _gender;//(性别)
                        //判定方法 一
                        get{
                            if(_gender!='男'&&_gender!='女')
                            {
                                return _gender='男';
                             }
                                return _gender;
                            }
                        set{_gender=value;}
                        //判定方法 二
                        get{return _gender;}
                        set{
                            if(value!='男'&&value!='女')
                            {
                                value='男';
                             }
                                _gender=value;
                           }//get
       

       
                public static void CHLSS()
                {
                        Console.WriteLine("我是{0},我今年{1}岁,我是{2}生,我可以吃喝拉撒睡哟~~~~~!",this.Name,this.Age,this.Gender);
]                }//CHLSS
        }//clss


        static void Main(string[] args)
        {
                Person zhangSan=new Person();//新建一个对象为:zhangSan
                zhangSan.Name="张三";//赋值给属性必须是用:[对象名]+[.]+[属性的命名]+[赋值运算符"="]+值(注意属性是什么类型,值就只能是什么类型,字符串用“”,字符用‘’,金钱类型值后面必须加“m”这个字母不分大小写。)
                zhangSan.Age=23;
                zhangSan.Gender='男';
                zhangSan.CHLLS();//使用类下的方法必须用[对象]加[.]再加[方法名]以分号结束
                Console.ReadKey();
        }

        5、当我们创建好一个类的对象后,需要给这个对象的每个属性去赋值,我们将这个过程称之为对象的初始化。

        6、静态和非静态的区别
        1)、在非静态类中,既可以有实例成员,也可以有静态成员。
        2)、在调用实例成员的时候,需要使用对象名,实例成员;
        静态与非静态调用的区别
        1)、在调用静态成员的时候,需要使用类名,静态成员名
        2)、在调用非静态成员的时候,需要对象来调用非静态成员。
        总结:静态成员必须使用类名去调用,而实例成员使用对象名调用。
              静态函数中,只能访问静态成员,不允许访问实例成员。
              实例函数中,既可以使用静态成员,也可以使用实例成员。
              静态类中允许有静态成员,不允许出现实例成员(非静态成员)

        使用:
        1)、如果你想要你的类当做一个“工具类”去使用,这个时候可以考虑将类写成静态的
        2)、静态类在整个项目中资源共享。
             只有在程序全部结束之后,静态类才会释放资源。

        堆  栈  静态存储区域
        释放资源,GC Garbage collection垃圾回收器。
       

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值