1. ruby 类学习 属性 方法
main.rb:
puts ("Hello World2")
require "person.rb"
persion = Person.new("mjp", "male", 28);
puts (persion.show);
persion.set_info("mojianpo");
puts (persion.info)
--------------------------------------------
person.rb:
class Person
attr:info,true;
def initialize(name,sex,age)
@name=name;
@sex=sex;
@age=age;
end
def show()
return "name:#{@name};\tsex:#{@sex};\tage:#{@age}";
end
def set_info(info)
return @info = info
end
end
----------------------------------------------
输出结果:
Hello World2
name:mjp; sex:male; age:28
mojianpo
---------------------------------------------
我们可以使用Person.new方法来创建一个Person类的实例对象。以@打头的变量是实例变量,
他们从属于某一实例对象,Ruby中实例变量的命名规则是变量名以@开始,您只能在方法内部使用它。
initialize方法使对象变为“就绪”状态,initialize方法是一个特殊的方法,这个方法在构造实例对象时会被自动调用。
对实例进行初始化操作时,需要重定义initialize方法。类方法new的默认的行为
19
就是对新生成的实例执行initialize方法,传给new方法的参数会被原封不动地传给initialize方法。
另外,若带块调用时,该块会被传给initialize方法。因此,不必对new方法进行重定义。
在Ruby中,只有方法可以操作实例变量,因此可以说Ruby中的封装是强制性的。在对象外部不可以直接访问,只能通过接口方法访问。
在Ruby中,一个对象的内部属性都是私有的。
以使用attr控制符来控制变量是否可读写。attr 只能带一个符号参数, 第二个参数是一个 bool 参数,用于指示是否为符号参数产生写方法。
它的默认值是 false,只产生读方法,不产生写方法。
下面的例子重定义类中的方法meth1,
class Test
def meth1
puts "This is meth1"
end
end
a = Test.new
a.meth1
class Test
def meth1
puts "This is new meth1"
end
end
a. meth1
执行结果为:
This is meth1
This is new meth1
重定义同一个类时,意味着对原有定义进行补充,不会覆盖原来的定义。而重定义方法时,则会覆盖原有定义。
分享到:
相关推荐
Ruby学习笔记 01 类的属性与方法 02 访问控制 03 Container(Array/Hash) 04 Iterator 05 简单数据类型 06 范围 07 方法 08 条件控制 09 异常处理
ruby语言跟c#的一些重要差别在于: 1.ruby是动态语言,c#是静态语言–即对象在new出来以后,ruby还可以动态给对象实例添加一些属性或方法(javascript也是如此) 2.ruby中刻意弱化了变量类型这个概念,默认情况下变量/...
在Ruby笔记3中,我们将会深入探讨这个强大的语言的各个方面,包括基础语法、类与对象、模块、方法、控制结构、异常处理、文件操作以及一些高级特性。 首先,让我们从基础语法开始。Ruby中的变量分为四种类型:局部...
这样Thing类中的属性name,description都被Treasure继承 2.以下三种方式传入父类initialize方法的参数分别是什么? 代码如下: # This passes a, b, c to the superclass def initialize( a, b, c, d, e, f ) ...
这些学习笔记涵盖了第17到21章的内容,以下是其中的一些关键知识点: 1. **枚举(Enum)的增强**: JDK 6对枚举类型进行了增强,支持枚举常量之间的比较,可以实现Comparable接口,还引入了枚举套接字(EnumSet)...
7. **类**:深入探讨类的定义、字段、属性、方法、继承、开放类和操作符重载。 8. **异常**:涵盖异常的抛出、捕获,断言的使用,以及上下文管理。 9. **元编程**:涉及装饰器、描述符、元类和注解,让读者能够...
类是创建对象的蓝图,它们定义了对象的属性(也称为实例变量)和行为(方法)。模块则用于封装相关的类和方法,可以实现代码复用和命名空间管理。学习如何创建和继承类,以及如何使用`include`和`extend`来导入模块...
在本篇web第二期的学习笔记中,我们涵盖了前端开发中的一些关键知识点,主要涉及HTML5和CSS3的应用。首先,笔记介绍了行内元素`<span>`的特点,它不会自动换行,而`<div>`作为块级元素会自动换行且可以包含`<span>`...
HTML5 学习笔记 HTML5 是 W3C 与 WHATWG 合作的结果,WHATWG 指 Web Hypertext Application Technology Working Group。WHATWG 致力于 web 表单和应用程序,而 W3C 专注于 XHTML 2.0。 HTML5 中的新特性包括: * ...
在“WEB学习笔记第三期关于JavaScript的内容”中,我们可以看到一些与图像、多媒体处理以及文本格式化的相关知识。 1. **图像处理**: - 默认情况下,图像没有边框,但可以通过CSS设置边框样式。若未设置链接,...
- **面向对象**:定义一个类,并在类中定义属性和方法,通过创建类的实例来调用方法输出内容。这种方式体现了Ruby作为面向对象语言的特点。 #### 运行Ruby程序 在命令行中切换到包含`HelloWorld.rb`文件的目录,并...
《Compass学习笔记》 Compass,全称Sass Compass,是一个基于Sass的CSS框架,它为Web开发者提供了强大的工具和方法,简化了CSS的编写,使得样式表的组织更加有序,可维护性大大增强。Sass是CSS的预处理器,而...
**RabbitMQ学习笔记** RabbitMQ是一款广泛应用的消息中间件,它基于AMQP(Advanced Message Queuing Protocol)协议,能够实现在分布式系统中可靠的消息传递。RabbitMQ的核心功能是作为一个消息代理,允许应用程序...
IDE 使用 JavaScript 记录用户的浏览器交互,然后将这些交互转换为可读性强、易于维护的脚本,支持多种编程语言,如 Java、C#、Python 和 Ruby。此外,Selenium IDE 还具有回放功能,可以方便地测试脚本的有效性。 ...
在对象篇的学习中,我们已经学习了如何创建对象、访问对象属性和方法,以及使用一些内置方法来操作对象。在本篇中,我们将深入探讨JavaScript中遍历对象属性的一种重要方法——for in循环。 首先,for in循环是一种...
在Ruby编程语言中,笔记可能涵盖了许多主题,包括基本语法、数据类型、控制结构、类与对象、模块、方法、异常处理、文件操作以及与其他语言的交互等。下面将对这些核心概念进行深入探讨。 首先,Ruby是一种面向对象...
子类可以通过`extends`关键字继承父类的属性和方法。 - **特质**:Scala中的特质类似于Java中的接口,但更加灵活。特质可以包含抽象方法和具体方法。 ##### 5.3 模式匹配和样例类 - **模式匹配**:Scala支持强大的...
同时,这也是学习Ruby语言和Org模式交互的一个好机会,对于提升你的开发技能和提高工作效率大有裨益。 总之,`org-ruby`是连接Ruby世界与Org模式的强大桥梁,它使得在Ruby环境中处理Org文件变得轻松易行。无论是...
4. 检查元素属性:`get_attribute()`方法可以获取元素的属性值,例如检查某个元素的CSS类名是否为激活状态。 四、等待策略 在自动化测试中,网页加载速度和动态元素的出现时间可能不一致,因此需要使用等待策略来...