一、封装:

封装:把客观的事物封装成类,使用和修改方便;

作用和结构体使用方法相似,程序执行流程不同;

要点:成员变量,属性,成员方法,构造函数,成员方法的静态和非静态,命名空间,常用的访问修饰符public公共的、parvate私有的,只有类本身可以访问,internal默认的,同一个命名空间下可以访问、protected被保护的、同一个继承关系下可以访问;

重名问题:同一个作用域下不允许出现重名问题,最简答解释作用域就是一个花括号内,而每一个循环是不同的花括号的情况下重名是没有关系的;

1、*****成员变量最基本的“经纪人”

class student  //新建类

{

  private string _name; //成员变量

  public string name  //属性

  {

  get { return  _name; }  //return的作用就是扔给外面一个值。

            //如果只有get,就只往外输出固定的值;

  set { _name = value; }  //如果执行语句 student.name = "abcde"; 那么这里value的值就是"abcde";

            //value的作用就是从外面赋予成员变量值。

  }

2、*****成员变量可以有多个“经纪人”,而且数据类型可以不一致

  private bool _sex;

  public bool sex

  {

    get{ return  _sex; }

    set{ _sex  =  value; }

  }

  public string sexabc

  {

  get { return "abcd"+ _sex; }   //如果执行语句 student.name = "abcde"; 那么这里value的值就是"请输入false";

               //如果执行语句 student.name = "false"; 那么这里value的值就是"abcdfalse";

  set {

    if(value == "false")

      _sex = value;

    else

      _sex = "请输入false";

    }

  }

3、*****构造函数

class student

{

  public student() {  } //创建构造函数就是执行了这一步;默认不被写出来,但是真实存在;

}

student  s  =  new  student();  //这个过程叫实例化的过程;而student()这个方法就是一个构造函数;

总结:重建对象的过程就是将类实例化的过程;

实例化的过程就是执行构造函数的过程;

构造函数是在创建完类之后形成的;

4、*****成员方法

  private string  _name;

  public  string name

    {

      get { return  _name; }

      set { value  =  _name; }

    }

    public string say()   //新建一个方法

    {

      return "啦啦啦"+_name;

    }

    student  s  =  new  student();

    s.name = "abcd";

    string str = s.say();

    Console.Write(s.str);  //输出的是say这个方法返回的值,此时是 啦啦啦abcd;

总结:在构造函数内可以给private赋值;如果在外面重新赋值那么就会覆盖构造函数内给private赋的值,输出新的,如果没有赋值,那么默认输出构造函数内赋予的值;

5、*****静态方法

含有static关键字的就是静态方法;

实例化的静态无法使用静态的方法;

静态的方法属于类本身,要用类名点出来;public static int abc(){}  赋值方法是:student.abc(); student就是类名;

5、*****命名空间或者程序集

namespace;

需要引用using 空间名;

二、继承

public class fly   //父类,这是个类名;

{

}

public string brid:fly   //子类,类名;可以继承父级的公共用的属性;

{

}

public string little brid:brid   //孙子类,类名;可以继承祖父类、父类的公共用的属性;

{

}

1、 父类、基类;

2、子类、派生类;

3、父类可以有无数个后辈类;

4、一个子类只能有一个父类;

三、多态

public class brid

  {

    public virtual string eat()

      {  return "aaaaa";  }

  }

public class little brid:brid

{

  public override string eat()

    { return "abcdefg"; }

}

1、方法名一样是可以的,会以重载的方式显示,参数不同;

2、virtual 虚拟的,override重写,voerload重载;

3、*****抽象类 / 抽象方法:

abstract class fly

{

  public abstract string eat();

}

class brid :fly

{

  public override string eat()

    { return "aaaaaa"; }

}

抽象方法必须放在抽象类里;

抽象类无法被实例化;

抽象类里如果有抽象方法,所有继承过次抽象类的后辈类,必需要return一个值;

抽象类不只有抽象方法;

抽象类只能当做父级使用;

abstarct 关键字;

4、*****接口

interface fly

{

  string flying();

}

关键字interface;

接口不能有实质性的方法;

无法被实例化;

不需要访问修饰符,默认public;

只能被继承;

所有接口方法必须全部被继承实现;否则报错;

C# 面向对象的封装、继承、多态的更多相关文章

  1. java面向对象(封装-继承-多态)

    框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...

  2. C# 面向对象基础&封装&继承&多态&加深一下冒泡排序写法

    (一)面向对象是什么? 面向对象是一种编程思想 (二)为什么要用面向对象? 1.结构清晰 2.易于维护 3.方便扩展 (三)new一个对象是什么过程? 实例化构造函数创建对象的过程就是将类实例化的过程 ...

  3. objective-c自学总结(三)---面向对象的封装,继承与多态

    面向对象的三大特性 封装 继承 多态 1.封装: 隐藏属性,方法或实现细节的过程称为封装 信息隐藏,隐藏对象的实现细节,不允许用户看到 将东西包装在一 然后以新的完整形式呈现出来 例如,两种或多种化学 ...

  4. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

    1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...

  5. Java基础——面向对象(封装——继承——多态 )

    对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...

  6. Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

    Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 ​ 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以 ...

  7. python面向对象(封装,继承,多态)

    python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...

  8. Python面向对象04 /封装、多态、鸭子类型、类的约束、super

    Python面向对象04 /封装.多态.鸭子类型.类的约束.super 目录 Python面向对象04 /封装.多态.鸭子类型.类的约束.super 1. 封装 2. 多态 3. 鸭子类型 4. 类的 ...

  9. 浅谈学习C++时用到的【封装继承多态】三个概念

    封装继承多态这三个概念不是C++特有的,而是所有OOP具有的特性. 由于C++语言支持这三个特性,所以学习C++时不可避免的要理解这些概念. 而在大部分C++教材中这些概念是作为铺垫,接下来就花大部分 ...

  10. Java三大特性(封装,继承,多态)

    Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...

随机推荐

  1. RSA公钥文件解密密文的原理分析

    前言 最近在学习RSA加解密过程中遇到一个这样的难题:假设已知publickey公钥文件和加密后的密文flag,如何对其密文进行解密,转换成明文~~ 分析 对于rsa算法的公钥与私钥的产生,我们可以了 ...

  2. 磁盘挂载问题:Fdisk最大只能创建2T分区的盘,超过2T使用parted

    需求说明:云服务器上买了一块8T的磁盘,准备挂载到服务器上的/data目录下. ===================================parted命令说明=============== ...

  3. 最小生成树模板题POJ - 1287-prim+kruskal

    POJ - 1287超级模板题 大概意思就是点的编号从1到N,会给你m条边,可能两个点之间有多条边这种情况,求最小生成树总长度? 这题就不解释了,总结就算,prim是类似dijkstra,从第一个点出 ...

  4. Scrum Meeting NO.8

    Scrum Meeting No.8 1.会议内容 2.任务清单 徐越 序号 近期的任务 进行中 已完成 1 代码重构:前端通讯模块改为HttpClient+Json √ 2 添加对cookies的支 ...

  5. K 班前7次作业成绩汇总

    K 班前7次作业成绩汇总 得分榜 千帆竞发 详细 短学号 名 1 2 3 4 5 6 7 TOTAL 505 基智 4.55 1 -2 0 0 -10 4.37 -2.08 414 圳源 5.43 2 ...

  6. Minimum Integer CodeForces - 1101A (思维+公式)

    You are given qq queries in the following form: Given three integers lili, riri and didi, find minim ...

  7. Tomcat & Servlet

    javaWeb javaWeb是指使用java技术实现所有web程序的技术的总称.我们称之为javaWeb. 1.请求和响应(成对出现) 2.Web资源的分类 web资源分为两大类,分别是静态资源和动 ...

  8. 基础-Math.floor与parseInt区别

    Math.floor只能对一个数向下取整,不能解析字符串 如: Math.floor(1.5) // 1 Math.floor(-2.1) // -3 Math.floor("3" ...

  9. .NET 使用 RabbitMQ 图文简介

    前言 最近项目要使用RabbitMQ,园里里面已经有很多优秀的文章,Rabbitmq官网也有.net实例.这里我尝试下图文并茂之形式记录下使用的过程. 安装 RabbitMQ是建立在erlang OT ...

  10. Raphaël - JavaScript Vector Library

    Raphaël http://dmitrybaranovskiy.github.io/raphael/ // ┌──────────────────────────────────────────── ...