对象和类的基础知识
 对象是看得到摸得着的,具体特指的一个具体实体。
 类是模子,确定对象将会拥有的特征(属性)和行为(方法)。
 类是对象的类型,类不占有内存,对象占有内存。
类的定义
 类中可以包含变量的定义和方法
 
//新建一个类
 public class Person
    {
        public string _name;
        public char _gender;
        public int _age;
        public void SayHello()
        {
            Console.WriteLine("hello,大家好,我是人");
        }
        public void walk()
        {
            Console.WriteLine("我走路");
        } 
}
 
类的实例化
 使用关键字new
 语法: 类 实例名=new 类();
 类的成员的访问
 实例名.属性 实例名.方法名();
 class Program
    {
        static void Main(string[] args)
        {
            Person per = new Person();
            per._name = "张三";
            per._age = 18;
            per._gender = '男';
            per.SayHello();
            per.walk();
            Console.WriteLine(per._name);
            Console.ReadKey();
        }
    }
 
属性
字段、方法、属性都可以叫做类的成员 member,他们都需要定义访问级别。访问级别的用处在于控制成员在那些地方可以被访问,这样达到面向对象中“封装”的目的。
 访问修饰符: private public protected internal
 Private 私有成员,在类的内部才可以访问,
 Protected 保护成员,在该类内部和继承类中可以访问
 Public 公共成员,完全公开,没有访问权限
 Internal当前程序集内可以访问。
 
//定义一个person类
   public class Person
    {
        //字段
        private string _name;
        //访问修饰符是私有的,这个字段就是私有的,外面的不可以访问,可以通过属性在外面或者其他地方进行访问
        //属性
        public string Name
        {
            get { return _name; }//读
            set { _name = value; }//写
        }
        //字段
       private  char _gender;
        //属性
        public char Gender
        {
            get { return _gender; }
            set { _gender = value; }
        }
        //字段
       private  int _age;
        //属性
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
        public void SayHello()
        {
            Console.WriteLine("hello,大家好,我是人");
        }
        public void walk()
        {
            Console.WriteLine("我走路");
        }
       
    }
 
 属性的定义:get和set,读和写
 属性是为了保护与之对应的字段的,保证对字段的读取和赋值符合要求。
 属性可以分为读写、只读、只写。
 允许外部访问的变量一定要声明为属性。
在属性中判断值
//在写的时候判断值
//person类中判断
    public int Age
        {
            get { return _age; }
            set
            {
                if (value >= 0 && value <= 150)
                {
                    _age = value;
                }
                else
                {
                    _age = 18;
                }
            }         
        }
        public void SayHello()
        {
            Console.WriteLine("hello,大家好,我是人,年龄是{0}",_age);
        }
 
//在读值的时候进行判断
 		get 
            { 
                if(_age>=0 && _age<=150)
                {
                    return _age;
                }
                else 
                {
                    return 18;
                }
             }
public void SayHello()
        {
            Console.WriteLine("hello,大家好,我是人,年龄是{0}",Age);
        }
 
构造函数
//类中定义构造函数
       public Person2(string name, char gender, int age)//后面可以给参数也可以不给参数
        {
            this._name = name;//指示代词
            this._gender = gender;
            this._age = age;
        }
 
//主函数那边调用构造函数
            Person2 per = new Person2("张三",'男',18);//利用构造函数给里面的字段赋值
            per.Show();
            Console.ReadKey();
 

析构函数
 不能在结构中定义析构函数,只能对类使用析构函数。
 一个类只能有一个析构函数
 无法继承或重载析构函数
 无法调用析构函数,他们是被自动调用的
 析构函数既没有修饰符也没有参数
 程序被执行完才可以调用。没什么用处。
        ~Person2()
        {
            Console.WriteLine("哈哈,我被调用了");
        }
 
命名空间
 用于解决类重名问题,可以看做是类的文件夹
 如果代码和被使用的类在一个namespace则不需要using(引入)
在不同的命名空间下的类有两种调用方法
 写全称 命名空间.类名
 先using引用命名空间,再调用(先添加引用,然后再导入命名空间)
两种命名方法:
 
                  
                  
                  
                  
                            
本文介绍了面向对象编程的基础概念,包括类和对象的区别、类的定义、实例化、属性、构造函数等核心内容,并解释了如何通过属性来保护字段。
          
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
                    
              
            
                  
					1083
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
					
					
					


            