C#面向对象的思想

本文介绍了面向对象编程(OOP)的基本概念,对比了面向过程编程与面向对象编程的区别。接着,阐述了OOP的三大特性:封装、继承和多态,并通过C#语言解释了这些概念。同时,讲解了类、对象、构造函数、接口和抽象类等核心概念,以加深对C#中面向对象编程的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、OOP简介

    Object Oriented Programming,面向对象编程。是一种计算机编程架构,其基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。

    面向对象编程和面向过程编程的区别:
    a、面向过程编程(c语言等):解决问题时要基于计算机的结构(必须考虑数据在内存中如何存储,即我们所学习的数据结构课程),程序=算法+数据结构;
    b、面向对象编程(c#,java等):解决问题是基于所要解决的问题(即对象)的结构。程序=%算法;

 

二、面向对象编程语言的三大特性

    封装:是所有OOP语言的一个重要特性,是用来按照自然人对于大千事物的理解思维,将物质的属性(私有变量,静态描述)和动态(函数或过程,行为描述)进行抽象化表示的一种编程手段,它的优势在于能够描述一个具有“同性”的抽象事物;
    继承:是面向对象编程最重要的一个特性,在C#中,任何一个类都可以继承另一个类,被继承的类称作基类或父类,继承其他类的类叫做派生类或子类,派生类将获取基类的所有非私有数据和行为以及新类为自己定义的所有其他数据和行为,因此,新类具有两个有效类型:新类的类型和它继承的类的类型;

    多态:是面向对象程序设计语言最核心的特征,多态意味着一个对象有着多重特征,可以在特定的情况下表现出不同形态,分为编译时多态和运行时多态。编译时的多态性:编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。运行时的多态性:运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作。C#中,运行时的多态性通过虚成员(接口或抽象类方法)实现。编译时的多态性为我们提供了运行速度快的特点,而运行时的多态性则带来了高度灵活和抽象的特点。

 

三、类和对象
    类:具有相同特性和行为的对象集合。(在某种意义上可以将其看作是一个数据类型);
    对象:是基于类的具体实体,有时称为类的实例;
    类的一般构成: 常量+变量(字段)+构造方法+方法(行为)+属性(访问器)。

    例如:

    Public class person
{
  private string name;---------字段
  public void eat()------------方法
  {
   console.writeline(“这是eat方法”);
  }
  public string Name-------字段name的属性
  {
   get{return name;}
   set{name=value;}
  }
}

   

    构造函数:类可以定义自己的构造函数,构造函数需要和包含它的类同名,上例中构造函数可以是public person(……){ …… },省略号表示构造函数可以带参数,也可以执行一定语句;另外,类可以接受不同参数的构造函数(多态的体现)

    对象可以通过实例化一个类来产生: person  no1 = new person(……);  产生对象no1后便可以对其进行一些操作,例如no1.Name=“honglinluoye”;console.writeline(no1.Name);

    类的继承:
 public   class  student :person
 {
  private  int  studentNumber;
  public   void  study()
  {
   ……;
  }
  public  int  StN
  {
   get{return studentNumber;}
   set{studentNumber=value;}
  }
 }


    这时,student类具有的属性为:Name,StN 方法为:eat,study,及具有包括子类和父类的所有方法和属性。

    接口:接口是面向对象编程的一个重要内容,主要负责功能的定义。
Interface ImyInterface
 {
  void  sayhello();
  string   Hello{get;set;} ---------只定义,不实现
 }

    实现接口:
Public class myclass:ImyInterface
{
 public void sayhello()-------实现方法
 {
  console.writeline(“……”);
 }
 public  string  Hello-------实现属性
 {
  get{return  hello;}
  set{hello=value;}
 }
 private string hello=“HelloWorld”;
}

 

    抽象类:提供多个派生类可以共享的基类的公共定义,用abstract关键字定义。
Abstract  class  class1
{
 void sayhello1(){……}------一般方法(实现)
 abstract public  void sayhello2();------抽象方法(未实现)
 string Hello1-------一般属性(实现)
 {
  get{return hello;}
  set{hello=value;}
 }
 string hello=“helloworld”;
 abstract  public string  Hello2{get;set;}----抽象属性(未实现)
}

 

    可以简单的将抽象类看做类和接口的某种程度上的结合,区别在于接口支持多重继承,而类和抽象类则不支持。




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值