C#基础篇--面向对象(类与对象)

简介: 1.类是什么?    类就相当于模板,就是把同一类的事物的共同特征进行的抽象。   类的创建和说明:     类是先根据一些具体的对象(实体的东西)来抽象出来的共同的特性,然后用代码来表示.      在类中,用数据表示事物的状态,用函数(方法)实现事物的行为动作。

1.类是什么?

   类就相当于模板,就是把同一类的事物的共同特征进行的抽象。

  类的创建和说明:

    类是先根据一些具体的对象(实体的东西)来抽象出来的共同的特性,然后用代码来表示. 

    在类中,用数据表示事物的状态,用函数(方法)实现事物的行为动作。

    当创建一个类时,系统会默认的添加一个构造函数,如果用户自己写一个构造函数则会覆盖这个默认的构造函数。当然构造函数也是可以重载的。

    构造函数的特点:

    1. 构造函数名必须与类名相同。
    2. 不能有任何的返回值类型。
    3. 访问修饰符一般都是Public.

      如果一个类中有一个构造函数,并且这个构造函数用的Private修饰的,那么这个类是不能实例化的。因为要实例一个类时,必须去调用这个类的构造函数。因此可以写在这个类中写一个静态的方法,在方法中来实例这个类。    

    方法的重写:

          是与参数的个数和参数的类型有关,与返回值没有关系。

   说到了类和方法,那么就有必要的说一下变量的作用域了:  

      是声明这个变量与最近的大括号的内部。

      局部变量必须要先赋值后才能够使用。

      而类的成员变量是可以不用赋值,就可以先使用,因为构造函数是会初始化这个变量的。 

      如果在一个方法中声明了一个与类的成员变量相同的变量,那么在使用时,调用类的成员变量要用this 与之区分开,如果不用this 那么方法中的变量要优先于成员变量。This就是表示当前类的对象。

2.对象是什么?

  对象就是指某一个具体的事务。在程序中它是类的一个实例。简单的说就是New出来的。

3.面向对象是什么?

  面向对象是一种分析问题的方式 主要的作用就是增加程序的可扩展性。

    面向对象的优点:

    它能够构建与现实世界相对应的问题模型,并保持他们的结构、关系和行为模式。  

  面向对象的三大特性: 封装、继承、多态。

    封装:  

    就是把事物的状态和行为封装在类中,使用类的人不需要知道类内部是怎么实现的,只要调用其中的属性和方法实现功能就行了。

    在程序中封装具体的实现:

    1.   属性封装了字段。
    2.   将多个方法封装成一个对象。
    3.   将一堆代码封装到一个方法中。
    4.   将一些功能封装到了几个类中。
    5.   将一些具有相同功能的代码封装到一个程序集中(dll 、exe),并且对外提供统一的访问接口。(例:公司的每个部门的部门经理,与其他部门协作。)

 

    继承:

     它是指类与类之间的关系,并且类是不能相互继承的。如果一个类没有显示继承自任何一个类,默认是继承Object(Object类是所有类的的父类)。如果显示指定了当前类的继承自某个类,则将覆盖默认的Object类。    

    继承的优点 :

    1.   代码的重用
    2.   多态(里氏替换原则LSP)(程序的可扩展性、灵活性),下面说明
    3.      子类继承父类的属性、方法、字段,使创建子类变得很简单,实瑞了代码的重用,和多态。但要记的子类只能继承父类中非私有的东西。

    继承后关于构造函数的问题:      

      1.类的构造函数是不能被继承的。只能在子类中去调用父类的构造函数。

      2.子类的构造函数会默认去调用父类中的无参数的构造函数,当然也可以自己来设置调用父类的哪一个构造函数。

                    (1)当在父类中写了带参的构造函数,记的要再增加一个无参的构造函数,(这也说明构造函数是可以重载的。)因为当自己在类中写了构造函数会覆盖系统默认的构造函数。

                    (2)当然也可以在子类的构造函数加上:base(父类构造函数要传的参数),这样就是调用父类中带参数的构造函数了。

      3.在当前类的构造函数中去也可以去调用当前类的另一个构造方法。用:this(参数),这样可以少写构造函数里的内容了。

      注意:在构造函数中如果用this()就不能再用:base(),相反也是一样的。

    

      当调用从父类中继承过来的成员的时候,如果子类没有重写则this.成员与base.成员是没有区别的。如果子类重写了父类成员,则this.成员,调用的是子类重写以后的。Base.成员,调用的依然是父类的成员。      

      类的单根继承性:一个子类只能继承一个父类。

      类的传递性:子类继承父类的方法和属性等,同时还继承了父类的父类的属性和方法。

      重要的特性: 父类对象可以引用子类实例,它编译的是父类对象,但运行却是一个子类对象。具体特征:

                   被声明为父类对象,拥有父类的属性等,占用子类的内存空间,子类方法覆盖父类的方法时,此时对象调用的是子类的方法;否则自动调用继承父类的方法,也就是说父类不能去调用子类中独有的成员。      

      关于父类中私有成员是否被继承的问题

      个人观点:所有私有成员没有被继承。是指没有办法去访问,并不代表内存中不存在。

      例如:儿子继承了父亲的一千万,但不能花。 

      访问级别的问题:(儿子能去的地方爹一定要能去)

                   子类的访问级别必须比父类的级别要低或相同。

                   当前类中的成员的访问级别不能比所对应的类型访问级别高(包括方法的参数。)

      

    多态:

     多态就是多种表现的形态, 具体的是指不同对象收到相同消息时,会产生不同行为,同一个类在不同的场合下表现出不同的行为特征。    

     实现多态的主要手段: 1.虚方法virtual, 2抽象方法Abstract 3接口。

      虚方法使用:

      1.     虚方法必须有方法体,当然方法体中可以不写内容
      2.     子类继承父类,其实父类的虚方法可以重写,也可以不重写。
      3.     虚方法可以写在普通类中

     

      虚方法与抽象方法的区别:

        1.虚方法必须有方法体,抽象方法不能有方法体。

        2.抽象方法必须在抽象类中声明,虚方法可以出现在抽象类中也可以在普通类中声明。

        3.抽象方法必须在子类中重写,虚方法可以被重写,也可以不重写。

    

    多态的作用:
      把不同的子类对象当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

    多态的含义:
      使得能够利用基类的指针来引用不同子类的对象,以及根据所引用对象的不同,以不同的方式执行相同的操作。

    总结的说多态的意义就是为了程序可扩展性,并且节省成本和提高效率。  

 

每一天都是崭新的,我们的目标有多远,我们就能走多远,坚持!!
目录
相关文章
|
2月前
|
开发框架 .NET C#
C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式
【10月更文挑战第9天】在 C#/.NET Core 中,有多种方法可以删除字符串的最后一个字符,包括使用 `Substring` 方法、`Remove` 方法、`ToCharArray` 与 `Array.Copy`、`StringBuilder`、正则表达式、循环遍历字符数组以及使用 LINQ 的 `SkipLast` 方法。
|
3月前
|
存储 C# 索引
C# 一分钟浅谈:数组与集合类的基本操作
【9月更文挑战第1天】本文详细介绍了C#中数组和集合类的基本操作,包括创建、访问、遍历及常见问题的解决方法。数组适用于固定长度的数据存储,而集合类如`List<T>`则提供了动态扩展的能力。文章通过示例代码展示了如何处理索引越界、数组长度不可变及集合容量不足等问题,并提供了解决方案。掌握这些基础知识可使程序更加高效和清晰。
85 2
|
2月前
|
编译器 C#
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
119 65
|
27天前
|
JSON 程序员 C#
使用 C# 比较两个对象是否相等的7个方法总结
比较对象是编程中的一项基本技能,在实际业务中经常碰到,比如在ERP系统中,企业的信息非常重要,每一次更新,都需要比较记录更新前后企业的信息,直接比较通常只能告诉我们它们是否指向同一个内存地址,那我们应该怎么办呢?分享 7 个方法给你!
|
2月前
|
Java 程序员 C#
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
13 0
|
3月前
|
C# 数据安全/隐私保护
C# 一分钟浅谈:类与对象的概念理解
【9月更文挑战第2天】本文从零开始详细介绍了C#中的类与对象概念。类作为一种自定义数据类型,定义了对象的属性和方法;对象则是类的实例,拥有独立的状态。通过具体代码示例,如定义 `Person` 类及其实例化过程,帮助读者更好地理解和应用这两个核心概念。此外,还总结了常见的问题及解决方法,为编写高质量的面向对象程序奠定基础。
27 2
|
4月前
|
C#
C#中的类和继承
C#中的类和继承
44 6
|
4月前
|
图形学 C# 开发者
全面掌握Unity游戏开发核心技术:C#脚本编程从入门到精通——详解生命周期方法、事件处理与面向对象设计,助你打造高效稳定的互动娱乐体验
【8月更文挑战第31天】Unity 是一款强大的游戏开发平台,支持多种编程语言,其中 C# 最为常用。本文介绍 C# 在 Unity 中的应用,涵盖脚本生命周期、常用函数、事件处理及面向对象编程等核心概念。通过具体示例,展示如何编写有效的 C# 脚本,包括 Start、Update 和 LateUpdate 等生命周期方法,以及碰撞检测和类继承等高级技巧,帮助开发者掌握 Unity 脚本编程基础,提升游戏开发效率。
92 0
|
4月前
|
Java C# 索引
C# 面向对象编程(一)——类
C# 面向对象编程(一)——类
35 0
|
4月前
|
开发框架 .NET 编译器
C# 中的记录(record)类型和类(class)类型对比总结
C# 中的记录(record)类型和类(class)类型对比总结