OOP-面向对象

封装,继承多态

一个桌子,用面向对象来描述一下它这个桌子项目

定义桌子类

对象:桌子

桌子的属性:名字,材质,体积

桌子的方法;放东西(方法)

现在桌子要放书,放花瓶,放文件(这里就已经多态了)

那么实现多态主要有三种方法:

1:虚方法:virtual

父类:桌子类

public class Table
{
    public string Name{get;set;}
public virtual void put()
{
 Console.WriteLine("父类中的放方法");
}

}        

子类:办公桌也要放东西

public class 办公桌:Table

{

public override void put)

{

//具体实现

}

}

子类:餐桌也要放东西

public class 餐桌:Table

{

public override void put)

{

//具体实现

}

}

那么子类就 override重写父类的方法

 2:抽象方法:abstract

于是我就写了三个方法,想了一下这样不对,如果以后继续要放东西,都要重新加一个方法,那多麻烦

于是定义一个抽象类,抽象类里面有一个具体的放东西方法,但没有具体实现

每次我要用到这个放东西的方法,那么我就去重写它-代码重用,也实现了多态(一个事物不同的表示方法)

现在又有一个问题

3:接口:interface

我桌子有一个办公桌,和餐桌,他们都有一个放东西方法,难道我又要定义另外一个抽象类,来实现?

我想了下,都是放东西方法,我得定义一个规则(接口),只要体积不超过多少,符合这个规则,以后不管你哪张桌子想放什么东西,只要符合这个规则(接口),那么就可以实现这个方法

于是我就定义一个接口,里面有一个方法,任何桌子想放东西只要继承这个接口,去实现这个方法就行

c#基础-oop(面向对象理解)的更多相关文章

  1. C++——OOP面向对象理解

    从Rob Pike 的 Google+上的一个推看到了一篇叫<Understanding Object Oriented Programming>的文章,我先把这篇文章简述一下,然后再说说 ...

  2. [.net 面向对象编程基础] (11) 面向对象三大特性——封装

    [.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承. ...

  3. [.net 面向对象编程基础] (13) 面向对象三大特性——多态

    [.net 面向对象编程基础] (13) 面向对象三大特性——多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...

  4. JAVA(一)JAVA基础/面向对象基础/高级面向对象

    成鹏致远 | lcw.cnblog.com |2014-01-23 JAVA基础 1.开发环境搭建 JAVA程序的执行流程 JAVA命令->要使用一个*.class文件(类文件)->通过c ...

  5. js面向对象理解

    js面向对象理解 ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP).面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是, ...

  6. java普通类、抽象类、接口、面向对象理解

    1.面向对象编程: 面向对象编程的语言不止java一种,还有: simula 67(第一个面向对象语言,支持单继承和一定含义的多态和部分动态绑定): Smalltalk(第一个支持动态类型的语言,支持 ...

  7. OOP 面向对象 七大原则 (一)

    OOP 面向对象   七大原则 (一) 大家众所周知,面向对象有三大特征继承封装多态的同时,还具有这七大原则,三大特征上一篇已经详细说明,这一篇就为大家详解一下七大原则: 单一职责原则,开闭原则,里氏 ...

  8. OOP面向对象 三大特征 继承封装多态

    OOP面向对象 ----三大特征 继承封装多态 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构 ...

  9. python基础,函数,面向对象,模块练习

    ---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? #  [] {} () None 0 2,位和字节的关系? # ...

随机推荐

  1. Spring框架学习(二)

    一.依赖注入的三种注入方式 Spring框架为我们提供了三种注入方式:set注入.构造方法注入和接口注入. 1.set注入 规律:无论给什么赋值,配置文件中<property>标签的nam ...

  2. gulp ---攻略一

    根据项目需要可能会出连载 项目需要现在用gulp进行js的质量检测.合并.压缩.发布,未来需要进行sass的编译.合并.压缩,html.img的压缩以及md5戳.reload等功能,暂时先测试js的质 ...

  3. ${param.origin}

    拦截器中设置未登录拦击跳转链接 response.sendRedirect(request.getContextPath() + "/loginAndRegister/loginAndReg ...

  4. 修改mysql用户名密码 和 PHPmysqlAdmin对应密码修改

    本地的mysql运行时,可能会用到修改用户名密码: mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('输入新密码');不存在修改用户啊 ...

  5. js 日期按年月日加减

    <script> function isleapyear(year) { if(parseInt(year)%4==0 && parseInt(year)%100!=0)r ...

  6. PHP 数组 foreach引用导致的bug

    <?php $arr = array('a', 'b', 'c'); foreach($arr as &$v) {} foreach($arr as $v) {} var_dump($a ...

  7. RabbitMQ 安装

    Install Erlang from the Erlang Solutions repository or Follow the instructions under "Installat ...

  8. 【C】 06 - 标准库概述

    任何程序都会有一些通用的功能需求,对这些需求的实现组成了库.它可以提高程序的复用性.健壮性和可移植性,这也是模块化设计的体现.C规范定义了一些通用接口库,这里只作概述性介绍,具体细节当然还是要查阅规范 ...

  9. [java] java解析txt文件

    /** * 读取txt文件内容封装为map返回 * @param filePath * @return */ public static String readTxt(String filePath) ...

  10. Dockerfile指令

    指令的一般格式为INSTRUCTION arguments,指令包括FROM.MAINTAINER.RUN等. FROM 格式为FROM <image>或FROM <image> ...