以下是关于Ruby类声明问题的答案:
在Ruby中,类声明使用class
关键字,后面跟着类名。类体包含在冒号后面,类体可以包含属性、方法、初始化器、嵌套类等内容。
例如,下面是Ruby中声明一个名为Person
的类:
class Person
end
类可以拥有属性,在类声明后面使用attr_accessor
定义属性,它允许访问和设置类的属性。
class Person
attr_accessor :name, :age
def initialize(name, age)
@name = name
@age = age
end
end
类的实例方法使用def
关键字定义,后面跟着方法名、参数列表和冒号。
class Person
def greet(name)
puts "Hello, #{name}!"
end
end
类的方法使用def
关键字定义,后面跟着方法名、参数列表和冒号。类方法可以通过self
关键字访问类的实例变量,也可以通过类名访问类变量。
class Person
class << self
def registered(name)
puts "Registered #{name}!"
end
end
end
类可以继承其他类,通过class << self
访问父类的方法和属性。
class Person
def initialize(name)
@name = name
end
def say_hello
puts "Hello, #{@name}!"
end
end
class Student < Person
end
类可以包含一些私有属性和方法,通过在类声明前加上private
或protected
关键字来定义。
class Person
private
def initialize(name)
@name = name
end
def say_hello
puts "Hello, #{@name}!"
end
end
构造方法用于初始化类的实例,在类的声明后面加上=
和参数列表。
class Person
def initialize(name)
@name = name
end
end
类的静态方法使用def self.method_name
定义,后面跟着方法名和参数列表。
class Person
def self.greet(name)
puts "Hello, #{name}!"
end
end
类的混入是将一个类的属性和方法注入到另一个类中,通常用于实现面向对象编程中的装饰器模式。
class Person
end
class Decorator
def initialize(person)
@person = person
end
def say_hello
@person.say_hello
end
end
person = Person.new
decorator = Decorator.new(person)
decorator.say_hello
类的扩展是将一个类的属性和方法添加到另一个类中,类似于Java中的继承,但扩展可以改变被扩展类的行为。
class Person
def say_hello
puts "Hello!"
end
end
class ExtendedPerson < Person
def say_hello
puts "Hello, I'm #{name}!"
end
end
person = ExtendedPerson.new
person.say_hello
类的代理是将一个类的实例作为另一个类的实例的代理,通常用于实现面向对象编程中的代理模式。
class Person
def say_hello
puts "Hello!"
end
end
class Proxy
def initialize(person)
@person = person
end
def say_hello
@person.say_hello
end
end
person = Person.new
proxy = Proxy.new(person)
proxy.say_hello
这些知识点包括Ruby中的类声明、属性、方法、初始化器、混入、扩展和代理等。
领取专属 10元无门槛券
手把手带您无忧上云