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.对象的初始化

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

 

posted @ 2017-12-11 22:14  youguess  阅读(543)  评论(0编辑  收藏  举报