学半年编程才知道“面向对象”能够这样理解

面向对象是向现实世界模型的天然延申,是一种“万物皆对象”的一种编程思想。java

什么是万物皆对象,对象有具体表如今哪些地方:在现实生活中的任何物体均可以归为一类事物,这一类事物能够理解成“对象”,而每个单独的个体都是一类事物的实例。编程

“对象”的概念也能够这样理解:把数据及对数据的操做方法放在一块儿,做为一个相互依存的总体——这所有一个总体称之为“对象”。设计模式

面向对象的编程是以对象为中心,以消息为驱动,因此程序=对象+消息。安全

面向对象有三大特性分别是:封装、继承、多态。

也正是由于这三大特性才使得“面向对象”面向对象编程范式触及的领域,已经不仅仅纯在于计算机。模块化

 

1.面向对象之封装:

封装最好理解了,是对象和类概念的主要特性。学习

封装就是将一类事物的属性和行为抽象成一个类,使其属性私有化,行为公开化,提升了数据的隐秘性的同时,使代码模块化。这样作使得代码的复用性更高。spa

而且类能够把本身的数据和方法只让可信的类或者对象操做,对不可信的进行信息隐藏。设计

简单来讲就是把一类“物体”用箱子装起来,并留下一个能够用“手”拿到物体的洞。相似于抽奖的纸箱。3d

 

2.面向对象之继承:

继承则是进一步将一类事物共有的属性和行为抽象成一个父类,而每个子类是一个特殊的父类--有父类的行为和属性,也有本身特有的行为和属性。这样作扩展了已存在的代码块,进一步提升了代码的复用性。

继承是指这样一种能力:它可使用现有类的全部功能,并在无需从新编写原来的类的状况下对这些功能进行扩展。

  • 经过继承建立的新类称为“子类”或“派生类”。
  • 被继承的类称为“基类”、“父类”或“超类”。
  • 继承的过程,就是从通常到特殊的过程。
  • 要实现继承,能够经过“继承”(Inheritance)和“组合”(Composition)来实现。

在某些 OOP 语言中,一个子类能够继承多个基类。可是通常状况下,一个子类只能有一个基类,要实现多重继承,能够经过多级继承来实现。

继承的好处

 子类拥有父类的全部属性和方法(除了private修饰的属性不能拥有)从而实现了实现代码的复用;

继承的缺点

继承定义了类如何相互关联,共享特性。但同时也破坏啦封装的特性,对于父类而言他的特性细节对于子类而言是透明的,

而且父类变动、子类必须变动,继承是一种强耦合性关系,需谨慎继承。 

 

学习继承必定少不了这三个东西:构造器、protected关键字、向上转型

构造器

经过上述咱们知道子类能够继承父类的属性和方法,除了那些private外还有同样是子类继承不了的那就是:构造器。

对于构造器而言,它只可以被调用,而不能被继承。 如要调用父类的构造方法咱们可使用super()。

 

protected关键字

当咱们尽量的想要隐藏一些变量、方法时,可是还须要容许子类的成员来访问他们。这时候就须要使用到protected关键字;

 

向上转型

它除了拥有被继承者的特性外,还拥有本身独有得特性。例如猫有抓老鼠、爬树等其余动物没有的特性。同时在继承关系中,

继承者彻底能够替换被继承者,反之则不能够,例如咱们能够说猫是动物,但不能说动物是猫就是这个道理,其实对于这个咱们将其称之为“向上转型”。

将子类转换成父类,在继承关系上面是向上移动的,因此通常称之为向上转型。因为向上转型是从一个叫专用类型向较通用类型转换,因此它老是安全的,惟一发生变化的可能就是属性和方法的丢失。

这就是为何编译器在“不曾明确表示转型”活“不曾指定特殊标记”的状况下,仍然容许向上转型的缘由。

 

3.面向对象之多态:

多态性(polymorphisn)是容许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值以后,父对象就能够根据当前赋值给它的子对象的特性以不一样的方式运做。虽然针对不一样对象的具体操做不一样,但经过一个公共的类,它们(那些操做)能够经过相同的方式予以调用。

简单的说,就是一句话:容许将子类类型的指针赋值给父类类型的指针。

若是说封装和继承是为了使代码重用,那么多态则是为了实现接口重用。
多态的一大做用就是为了解耦--为了解除父子类继承的耦合度。若是说继承中父子类的关系式IS-A的关系,那么接口和实现类之之间的关系式HAS-A。
简单来讲,多态就是容许父类引用(或接口)指向子类(或实现类)对象。不少的设计模式都是基于面向对象的多态性设计的。

 

例如老师教学生上课这个过程,用来解释一下多态性,把老师看成一个对象,老师类相同的属性:姓名、性别、年龄等,相同的方法:讲课、布置做业等。

而经过老师类接口能够被多个相同的类使用,可被分为语文老师类、数学老师类、地理老师类等等。而且每一个类都有父类的属性特征,也都有本身独立的特性。-以上就是面向对象三大特性之:多态。

以上就是“面向对象”的简单概念。

理解伙伴点赞支持一下~~支持就是动力哦

相关文章
相关标签/搜索