当前位置: 首页 > news >正文

深入了解面向对象——面向对象的重要特征(C#)未写完

面向对象的三个基本特征分别为封装、继承、多态。

面向对象概述

对象是现实世界中的实体,它有三个基本要素,分别为封装、继承和多态。而类则是将具有相似属性和方法的对象集合起来。

1、面向过程

2、面向对象

3、类与对象的关系

类的继承

继承允许用户根据一个类来定义另一个类,这使得创建和维护应用程序变得更容易,同时也有利于重用代码和节省开发时间。

当创建一个类时,程序员不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承已有类的成员即可。这个已有的类被称为基类,这个新的类被称为派生类

基类和派生类

在类的继承中,被继承的类叫做基类或父类,继承的类叫做派生类或子类。一个类可以派生自多个类或接口,这意味着它可以从多个基类或接口继承数据和方法。

C#中创建派生类的语法如下:

当一个类从另一个类派生出来时,派生类就自然具有基类的数据成员、属性和方法等。在基类中定义的这些成员,已经不需要在派生类定义中的重写。在派生类的定义中,只需编写基类所不具有的代码即可。

编写程序 ,通过图形的基类,派生出一个矩形的类,并计算出它的面积。

using System;
namespace Project1
{
    class Shape    //图形
    {
        public void setWidth(int w)
        {
            width = w;
        }
        public void setHeight(int h)
        {
            height = h;
        }
        protected int width;
        protected int height;
    }
    class Rectangle : Shape    //长方形继承于Shape
    {
        public int getArea()
        {
            return (width * height);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Rectangle Rect = new Rectangle();
            Rect.setWidth(6);
            Rect.setHeight(8);
            Console.WriteLine("总面积: {0}", Rect.getArea());
        }
    }
}

运行结果如下:

总面积: 48

继续的特性

调用基类的构造函数

类的封装

public公开的

private私有的

protected受保护的

internal内部访问

多态

接口

接口的声明

接口的实现

接口的继承

抽象类和密封类

抽象类和抽象方法

抽象类与接口的区别

密封类和密封方法

委托与事件

委托

事件

匿名方法与Lambda表达式

匿名方法

Lambda表达式

相关文章:

  • git--tag(标签)命令--使用/实例
  • 【投资组合管理】使用 TIME 框架优化软件组合
  • 安全云是如何做好云安全的?
  • Git与Idea整合
  • 了解RPC、HTTP、TCP
  • Android集成IJKFFMPEG总结
  • 【二叉树】最长同值路径
  • 使用缓冲区提高并发
  • Windows10环境下Python 开发环境搭建
  • JavaEE TCP协议
  • 51单片机DS18B20温度报警器proteus仿真设计_可调上下限
  • SSRF漏洞
  • 猿创征文|平凡的应届生四年学习之路
  • mysql8忘记密码如何重置(禅道的mysqlzt服务和mysql服务冲突)
  • Nginx 配置 SSL(HTTPS)
  • E-HPC支持多队列管理和自动伸缩
  • go语言学习初探(一)
  • JavaScript服务器推送技术之 WebSocket
  • jQuery(一)
  • Just for fun——迅速写完快速排序
  • LeetCode算法系列_0891_子序列宽度之和
  • Linux下的乱码问题
  • MySQL的数据类型
  • nodejs实现webservice问题总结
  • Vue.js源码(2):初探List Rendering
  • vue的全局变量和全局拦截请求器
  • 从0实现一个tiny react(三)生命周期
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 前端自动化解决方案
  • 实战|智能家居行业移动应用性能分析
  • 算法-图和图算法
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • elasticsearch-head插件安装
  • postgresql行列转换函数
  • PostgreSQL之连接数修改
  • 进程与线程(三)——进程/线程间通信
  • 整理一些计算机基础知识!
  • ​io --- 处理流的核心工具​
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • $.each()与$(selector).each()
  • (11)MSP430F5529 定时器B
  • (C语言)球球大作战
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (数据结构)顺序表的定义
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • .naturalWidth 和naturalHeight属性,
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • @Resource和@Autowired的区别
  • @Transactional类内部访问失效原因详解
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • [20140403]查询是否产生日志