zoukankan      html  css  js  c++  java
  • C# 面向对象2 (类的语法)

    1.类

    语法:

    [public] class 类名

    {

      字段;

      属性;

      方法;

    }

    **类名首字母必须大写

    2.创建对象

    创建这个类的对象过程称之为类的实例化,关键字:new

    this:表示当前这个类的对象.

    类是不占内存的,而对象是占内存的!(因为创建完对象后,对象的字段就会被初始化,有了初始值)

    创建一个Person类:创建了字段(存取数据)和方法(对象的行为)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 面向对象01
    {
        public class Person
        {
            //字段
            public string _name;
            public int _age;
            public char _gender;
    
    
            public void CHLSS()
            {
                //this关键字:表示当前这个类的对象
                Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生,我可以吃喝拉撒睡~~",this._name,this._age,this._gender);
            }
    
        }
    }

    main函数:创建对象,并赋值字段

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 面向对象01
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                //创建Person类的对象  new关键字
                Person suQuan = new Person();//自定义类 Person,系统的类
                suQuan._name = "孙权";
                suQuan._age = 23;
                suQuan._gender='';
    
                suQuan.CHLSS();
    
                Console.ReadKey();
            }
        }
    }

    **结构与类的区别:结构不具备类的特征:封装,继承和多态.

    3. 属性

    属性的作用就是保护字段,对字段的赋值和取值进行限定.

    属性的本质就是两个方法,get和set 方法

    既有get()也有set()方法,我们称之为可读可写属性.

    只有get()没有set(),我们称之为只读属性.

    没有get()只有set(),我们称之为只写属性.

    **reflector.exe 微软反编译器的使用

    **Fields,Methods,Property

    ***字段就是女人,属性才是男人. 男人保护女人的!

    **set 和get方法的原型

    //在反编译器中查看 get set
            //set方法的原型 
            public void set_Name(string value)
            {
                this._name = value;
            }
            //get方法的原型
            public string get_Name()
            {
                return this._name;
            }

    **字段在类中必须是私有的,只能通过属性来访问

    set方法在赋值的时候调用,value值的判断

    get方法在取值的时候调用,对字段值的判断

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 面向对象01
    {
        public class Person
        {
            //字段,存数据
            private string _name;
    
            
            public string Name
            {
                //当你输出属性值的时候,会执行get方法
                get { return _name; }
                //当你给属性赋值的时候,首先会执行set方法
                set { _name = value; }
            }
    
            //在反编译器中查看 get set
            //set方法的原型 
            //public void set_Name(string value)
            //{
            //    this._name = value;
            //}
            //get方法的原型
            //public string get_Name()
            //{
            //    return this._name;
            //}
    
            private int _age;
    
            public int Age
            {
                get { return _age; }
                //对Age属性 赋值的时候调用!
                set
                {
                    if (value < 0 || value > 100)
                        value = 0;
    
                    _age = value;
                }
            }
    
            private char _gender;
    
            public char Gender
            {
                //对Gender属性 取值的时候调用!
                get
                {
                    if (_gender != '' && _gender != '')
                      return _gender = '';
    
                    return _gender;
                }
                set { _gender = value; }
            }
    
    
            //方法:对象的行为
            public void CHLSS()
            {
                //this关键字:表示当前这个类的对象
                Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生,我可以吃喝拉撒睡~~",this.Name,this.Age,this.Gender);
            }
    
        }
    }

    4.访问修饰符

    public:公开的公共的,在哪都能访问

    private:私有的,只能在当前类的内部进行访问,除了这个类就访问不到了. 默认private

    5.创建对象的正确方法

    1.类中的字段是private的,属性是public的

    2.创建对象时只能对属性访问和赋值,(由属性做处理,在给字段)

    所以之前的第二点的方法是不对,以下才行

    main方法:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 面向对象01
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                //创建Person类的对象  new关键字
                Person suQuan = new Person();//自定义类 Person,系统的类
                suQuan.Name = "孙权";
                suQuan.Age = -23;
                suQuan.Gender='';
    
                suQuan.CHLSS();
    
                Console.ReadKey();
            }
    
        }
    }

    Person类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 面向对象01
    {
        public class Person
        {
            //字段,存数据
            private string _name;
    
            
            public string Name
            {
                //当你输出属性值的时候,会执行get方法
                get { return _name; }
                //当你给属性赋值的时候,首先会执行set方法
                set { _name = value; }
            }
    
            //在反编译器中查看 get set
            //set方法的原型 
            //public void set_Name(string value)
            //{
            //    this._name = value;
            //}
            //get方法的原型
            //public string get_Name()
            //{
            //    return this._name;
            //}
    
            private int _age;
    
            public int Age
            {
                get { return _age; }
                //对Age属性 赋值的时候调用!
                set
                {
                    if (value < 0 || value > 100)
                        value = 0;
    
                    _age = value;
                }
            }
    
            private char _gender;
    
            public char Gender
            {
                //对Gender属性 取值的时候调用!
                get
                {
                    if (_gender != '' && _gender != '')
                      return _gender = '';
    
                    return _gender;
                }
                set { _gender = value; }
            }
    
    
            //方法:对象的行为
            public void CHLSS()
            {
                //this关键字:表示当前这个类的对象
                Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生,我可以吃喝拉撒睡~~",this.Name,this.Age,this.Gender);
            }
    
        }
    }

    6.对象的初始化

    当我们创建好一个类的对象后,需要给这个对象的每个属性去赋值.

  • 相关阅读:
    Red Hat Enterprise Linux 7.2下使用RPM包安装SQL Server vNext
    VS2015解决方案资源管理器空白,不显示内容
    ArcEngine调用FeatureToLine工具传参问题
    ArcEngine调用GP里的Merge工具传参问题
    ArcGIS GP服务的发布及调用
    利用 Chrome 原生工具进行网页长截图
    关于ueditor与arcgis js api同用会报错的问题
    关于ueditor使用说明
    bootstraptable为行中的按钮添加事件
    关于html与body的高度问题
  • 原文地址:https://www.cnblogs.com/youguess/p/8025303.html
Copyright © 2011-2022 走看看