6.Ruby面向对象的四个特征

1、抽象

忽略与当前很多目标没有共性的东西,专注于与当前目标有共性的方面,就是把世界中的某一类共性东西,提取出来,用程序代码表示,抽象出来的一般叫做类或者接口。抽象并不是提取全部东西,而是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一个数据抽象,二是行为抽象。

数据抽象 –>表示世界中一类事物的特征,就是对象的属性。比如鸟有翅膀,羽毛等(类的属性)

行为抽象 –>表示世界中一类事物的行为,就是对象的方法。比如鸟会飞,会叫(类的方法)

2、封装

封装就是把行为和数据包围起来,对数据的访问、更新、查询等操作都必须通过调用对象的方法来完成,不能直接从外部进行操作。

t = Time.now     #从系统获取当前时间
p t.year         #=> 2020 (从时间中提取年)

3、继承

ruby同JAVA一样只支持单继承,每个类只能有一个父类,为了提高程序的灵活性ruby引入了 模块 为实现多重继承提供了可能,模块可以说是类的一个补充。

class Point
  def initialize(x, y)
  end
end
class Point3D < Point
  # 子类可以重写父类的方法
  def initialize(x,y,z)
    super(x,y)
  end
end

通过继承可以实现:

  • 在不影响原有功能的前提下追加新功能
  • 在子类中重定义原有功能,使名称相同的方法产生不同的效果
  • 在已有功能的基础上追加处理,扩展已有功能

4、多态

对象提供了将数据及其处理组合起来的“功能”。对象知道数据是怎么被处理的,换句话说,各个对象都有自己独有的消息解释权。同名方法属于多个对象(不同对象的处理结果也不一样),这种现象,用面向对象的术语来说,就是多态。例如,我们可以观察一下Object类、String类和Float类的各对象调用to_s方法的运行结果,可以看出,不同的类得到的结果是不一样的。

obj = Object.new  #对象(Object)
str = "Ruby"      #字符串(String)
num = Math::PI    #数值(Float)

p obj.to_s        #=> "<Object:0x7fa1d6bd1008>"   
p str.to_s        #=> "Ruby"   
p num.to_s        #=> "3.141592653589793"     

面向对象程序设计具有许多优点:

1、可复用,开发时间短,效率高,可以在应用程序中大量采用成熟的类库,从而缩短了开发时间。

2、应用程序易于维护、更新和升级,继承和封装使得应用程序的修改带来的影响更加局部化。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/ruby/rubyhigh/1460.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注