【C#】面向对象的简单介绍

举报
Laura_张 发表于 2022/08/26 23:47:46 2022/08/26
【摘要】 文章目录 对象和类的基础知识类的定义类的实例化属性构造函数析构函数命名空间感谢阅读,欢迎斧正~ 对象和类的基础知识 对象是看得到摸得着的,具体特指的一个具体实体。 类是模子,确定...


对象和类的基础知识

对象是看得到摸得着的,具体特指的一个具体实体。
类是模子,确定对象将会拥有的特征(属性)和行为(方法)。
类是对象的类型,类不占有内存,对象占有内存。

类的定义

类中可以包含变量的定义和方法
在这里插入图片描述

//新建一个类
 public class Person
    {
        public string _name;

        public char _gender;

        public int _age;

        public void SayHello()
        {
            Console.WriteLine("hello,大家好,我是人");
        }
        public void walk()
        {
            Console.WriteLine("我走路");
        } 
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

类的实例化

使用关键字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();
        }
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

属性

字段、方法、属性都可以叫做类的成员 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("我走路");
        }
       
    }


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

属性的定义: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);
        }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
//在读值的时候进行判断
 		get 
            { 
                if(_age>=0 && _age<=150)
                {
                    return _age;
                }
                else 
                {
                    return 18;
                }
             }
public void SayHello()
        {
            Console.WriteLine("hello,大家好,我是人,年龄是{0}",Age);
        }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

构造函数

//类中定义构造函数
       public Person2(string name, char gender, int age)//后面可以给参数也可以不给参数
        {
            this._name = name;//指示代词
            this._gender = gender;
            this._age = age;
        }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
//主函数那边调用构造函数
            Person2 per = new Person2("张三",'男',18);//利用构造函数给里面的字段赋值
            per.Show();
            Console.ReadKey();

  
 
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

析构函数

不能在结构中定义析构函数,只能对类使用析构函数。
一个类只能有一个析构函数
无法继承或重载析构函数
无法调用析构函数,他们是被自动调用的
析构函数既没有修饰符也没有参数
程序被执行完才可以调用。没什么用处。

        ~Person2()
        {
            Console.WriteLine("哈哈,我被调用了");
        }

  
 
  • 1
  • 2
  • 3
  • 4

命名空间

用于解决类重名问题,可以看做是类的文件夹
如果代码和被使用的类在一个namespace则不需要using(引入)

在不同的命名空间下的类有两种调用方法
写全称 命名空间.类名
先using引用命名空间,再调用(先添加引用,然后再导入命名空间)

两种命名方法:
在这里插入图片描述

感谢阅读,欢迎斧正~

文章来源: blog.csdn.net,作者:张艳伟_Laura,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/Laura__zhang/article/details/110393449

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。