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

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

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

“对象”的概念也可以这样理解:把数据及对数据的操作方法放在一起,作为一个相互依存的整体——这全部一个整体称之为“对象”。

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

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

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

 

1.面向对象之封装:

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

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

并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

简单来说就是把一类“物体”用箱子装起来,并留下一个可以用“手”拿到物体的洞。类似于抽奖的纸箱。

 

2.面向对象之继承:

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

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

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

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

继承的好处

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

继承的缺点

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

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

 

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

构造器

通过上述我们知道子类可以继承父类的属性和方法,除了那些private外还有一样是子类继承不了的那就是:构造器。

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

 

protected关键字

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

 

向上转型

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

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

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

这就是为什么编译器在“未曾明确表示转型”活“未曾指定特殊标记”的情况下,仍然允许向上转型的原因。

 

3.面向对象之多态:

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

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

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

 

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

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

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

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