浅谈面向对象三大编程的特征

(一)封装:

属性property:属性是类、结构和接口的命名成员。它们提供了通过访问器accessor读、写或计算私有字段值的灵活机制。

属性是这样的成员:它们提供灵活的机制来读取编写或计算私有字段的值,可以像公共数据成员一样使用属性,但实际上他们是被称为访问器的特殊方法。这使得数据在可被轻松访问的同时,仍能提供方法的安全性和灵活性。

属性机制使得私有成员被隐藏,实现了封装的效果,良好的封装可以减少耦合,淡化类与类之间的紧密度依赖关系。

(二)继承:

继承符号: “:”实现继承操作,建立Is-a关系。

virtual:用于修饰方法、属性、索引器、或事件声明,并且允许在派生类中重写这些对象。

override:重写虚方法,将从父类继承的虚方法重写覆盖。

new关键字:在子类中声明一个名称和继承的方法名相同新的方法,如果声明子类的对象是父类的类型,将还会执行继承的父类的方法,override则会执行重写过的方法。

base:可以调用父类的成员方法,除了构造函数和析构函数,派生类将隐式的继承了直接基类的所有成员。也可以显示的调用父类的构造函数来构造子类的成员数据。

(三)多态:

同一操作作用于不同的对象,可以有不同的解释,产生不同的执行效果。多态性通过派生类覆写基类中的虚函数型方法来实现。多态性分为两种,一种是编译时的多态性,一种是运行时的多态性。(1)编译时的多态性:编译时的多态性是通过重载来实现的,对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。(2)运行时的多态性:运行时的多态性就是指直到系统运行时,才根据实际情况实现何种操作。C#中运行时的多态性是通过覆写成员实现

1.声明:abstract class classname在类声明中使用abstract修饰符指示某个类只能是其他类的基类,标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现

(2)抽象方法的特性:

抽象方法是隐式的虚方法,只允许在抽象类中使用抽象方法声明。因为抽象方法声明不提供实际的实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号”{}”。

实现多态性的重载和覆写的比较:

重载的特点(两必须一可以):方法名必须相同,参数列表必须不相同,返回类型可以不相同。

覆写的特点(三相同):相同的方法名称,相同的参数列表,相同的返回值类型。

3.密封类:密封类不能被继承,密封方法重写基类的方法,但其本身不能在任何派生类中进一步重写。密封类只要是为类防止第三方未经授权的扩展自身的类

时间: 2024-10-10 08:29:16

浅谈面向对象三大编程的特征的相关文章

在Objective-C中浅谈面向对象

接触面向对象也有一段时间了,当时是通过C++学习的OOP,后来又接触到了PHP和Java.每种OOP的语言在面向对象上或多或少都会有不同的地方,现在在学习OC的面向对象部分,又感觉到OC面向对象的特点.写篇博文总结一下OC中的面向对象.刚接触OC,用OC中的便利初始化方法和便利构造器有点蹩脚,不过还可以在接受的范围之内,以下的东西可能会对面向对象的特征:抽象,封装,继承等总结的较少一些,主要总结了OC中面向对象的特点.在用到便利构造器的时候,如果之前学习过设计模式的话会好理解一些. 在下面的代码

[转帖]浅谈响应式编程(Reactive Programming)

浅谈响应式编程(Reactive Programming) https://www.jianshu.com/p/1765f658200a 例子写的非常好呢. 0.9312018.02.14 21:22:16字数 1877阅读 9816 这是告别CSDN后第一次使用简书写IT类的博客,还在适应.最不适应的就是不能直接手输markdown语法标记.(好像原因是我没有切换编辑器) 什么是响应式编程(Reactive Programming) In computing, reactive program

五 浅谈CPU 并行编程和 GPU 并行编程的区别

前言 CPU 的并行编程技术,也是高性能计算中的热点,也是今后要努力学习的方向.那么它和 GPU 并行编程有何区别呢? 本文将做出详细的对比,分析各自的特点,为将来深入学习 CPU 并行编程技术打下铺垫. 区别一:缓存管理方式的不同 GPU:缓存对程序员不透明,程序员可根据实际情况操纵大部分缓存 (也有一部分缓存是由硬件自行管理). CPU:缓存对程序员透明.应用程序员无法通过编程手段操纵缓存. 区别二:指令模型的不同 GPU:采用 SIMT - 单指令多线程模型,一条指令配备一组硬件,对应32

浅谈Windows API编程

WinSDK是编程中的传统难点,个人写的WinAPI程序也不少了,其实之所以难就难在每个调用的API都包含着Windows这个操作系统的潜规则或者是windows内部的运行机制…… WinSDK是编程中的传统难点,曾经听有一个技术不是很好的朋友乱说什么给你API谁都会用,其实并非那么简单,个人写的WinAPI程序也不少了,其实之所以难就难在每个调用的API都包含着Windows这个操作系统的潜规则或者是windows内部的运行机制. 首先来谈谈句柄,初学习WinSDK的朋友刚看到这个词头大了吧?

浅谈面向对象和继承

1.面向对象和面向过程的区别 面向过程:注重代码的过程 面向对象:注重代码的结果 2.面向对象三大特性 抽象   封装  继承  多态(JS不存在多态) 3.什么是一个构造函数 new 一个关键字函数  创建一个对象,该对象的的属性this指向window 函数里面指向这个对象 构造函数和普通函数的区别 : 1.前者的this的指向是实例化后的对象 后者的指向是指向window 2.普通函数返回值需要加return 构造函数不需要因为返回的是自己本身 为什么构造函数没有return却能够有返回值

浅谈面向对象特征

所有的面相对象思想,归根结底是为了简化代码,减少代码量,构建更符合现实生活逻辑的程序代码,从而减轻程序员的负担.不能一味地或者说刻意地去使用面相对象的思想而忽略了程序所实现的功能或者框架,要根据实际情况 众所周知,面向对象编程的特点为:封装.继承.多态.C#是一门完全面向对象的语言,由于比Java推出的时间还要晚,所以对面向对象的思想的体现比Java还要完美,那么在C#中如何体现封装.继承和多态呢?下面举例并进行说明. 1.封装 封装的好处有以下几点: ①数据不外泄,可以做到一定的保护 ②类的使

day10 浅谈面向对象编程

面向对象编程:第一步找名词,名词是问题域中的. 第二步概括名词设计成类.某些名词可以浓缩包含到其它名词中,成为其属性. 第三步找动词,动词也是问题域中的.   第四步概括动词设计成方法.动作的产生往往是对象身上发生的,根据动词动作的产生归纳到所属对象. 第五步根据需求确立方法的参数和返回值.如果在调用的地方,不需要值的返回或者返回的值后面根本用不到,则使用void.反之,如果方法调用的地方需要返回值或者后面其它地方需要用到该方法的结果,则设置相应的返回类型.如果方法中要使用其它地方传进来的值数据

虚拟世界(代码)--浅谈面向对象编程感触

不知不觉已经来到北京一年了,接触编程也一年了,或许我已经不再是那个连HelloWord都要写了N遍都不理解的低级菜鸟了(因为现在是中级了!!~~依旧是菜鸟) 在之前从来没有接触过编程,也不知道什么面向对象编程,面向过程编程.我的代码人生就是从这面向对象编程开始的. 面向对象编程,接触了C#和Java两种编程语言,感触良多(说实话,我现在已经快记不得老师讲过的有哪些重点了).我根据自己所了解的谈谈这段时间的收获. 一.什么是面向对象编程? 最初,老师告诉我们C#和Java都是面向对象编程的语言.那

浅谈Java三大特性

Java三大特性想必大家都不陌生:封装.继承以及多态.很多刚接触Java的小伙伴都会想,它们到底有什么了不得之处,又赋予Java这门编程语言什么魔力呢?今天我们来探讨一下吧~~ 首先,名词解释: 封装,即是隐藏一切可隐藏的东西,对外界只提供最简单的编程接口.比如,在一个类中,把数据和操作方法绑定起来,对数据的访问只能通过这些 get/set 方法(又称为接口)来实现. 为什么封装?比如,我是一个厨师,我有一本食谱,你今天想吃肉,让我帮忙露两手.具体加了多少盐,放了多少醋你不需要关心(隐藏具体实现