从继承ruby的类创建对象
我正在努力理解(谷歌搜索后)如何实现这一点:我有一门课:从继承ruby的类创建对象,ruby,inheritance,Ruby,Inheritance,我正在努力理解(谷歌搜索后)如何实现这一点:我有一门课: class Student # constructor method def initialize(name,age) @name, @age = name, age end # accessor methods def getName @name end def getAge @age end # setter methods def s
class Student
# constructor method
def initialize(name,age)
@name, @age = name, age
end
# accessor methods
def getName
@name
end
def getAge
@age
end
# setter methods
def setName=(value)
@name = value
end
def setAge=(value)
@age = value
end
end
假设我有另一个从学生那里继承的类
class Grade < Student
#constructor method
def initialize(grade)
super
@grade = grade
end
# accessor methods
def getGrade
@grade
end
# setter methods
def setGrade=(value)
@grade = value
end
end
我如何构建这个Student
(我刚刚创建的)与学生关联的Grade
对象,以及如何调用继承的对象,例如,我想:
输入“学生姓名和相关成绩”
我知道我可以将grade变量放在
学生
类中,但为了学习,我这样做。此代码可以满足您的要求:
class Grade
attr_accessor :value
def initialize value
@value = value
end
end
class Student
attr_accessor :name, :age, :grade
def initialize name, age, grade
@name, @age, @grade = name, age, Grade.new(grade)
end
end
st = Student.new 'John', 18, 5
puts "student #{st.name} and associated grade #{st.grade.value}"
此代码将执行您想要的操作:
class Grade
attr_accessor :value
def initialize value
@value = value
end
end
class Student
attr_accessor :name, :age, :grade
def initialize name, age, grade
@name, @age, @grade = name, age, Grade.new(grade)
end
end
st = Student.new 'John', 18, 5
puts "student #{st.name} and associated grade #{st.grade.value}"
首先,不需要像那样在Ruby中定义访问器,它远不是习惯用法。让我们先清理一下:
class Student
attr_accessor :name, :age
def initialize(name, age)
@name =name
@age = age
end
end
class Grade
attr_accessor :value
def initialize(grade)
@value = grade
end
end
其次,Grade
似乎根本不应该从Student
继承,只需调整后者以同时存储一个Grade
实例变量:
class Student
attr_accessor :name, :age, :grade
def initialize(name, age, grade = nil)
@name =name
@age = age
@grade = grade
end
end
然后可以像这样实例化一个学生:
student = Student.new("Test", 18, Grade.new(1))
或者,由于默认值,您取消了等级,以后再指定:
student = Student.new("Test", 18)
# later
student.grade = Grade.new(1)
首先,不需要像那样在Ruby中定义访问器,它远不是习惯用法。让我们先清理一下:
class Student
attr_accessor :name, :age
def initialize(name, age)
@name =name
@age = age
end
end
class Grade
attr_accessor :value
def initialize(grade)
@value = grade
end
end
其次,Grade
似乎根本不应该从Student
继承,只需调整后者以同时存储一个Grade
实例变量:
class Student
attr_accessor :name, :age, :grade
def initialize(name, age, grade = nil)
@name =name
@age = age
@grade = grade
end
end
然后可以像这样实例化一个学生:
student = Student.new("Test", 18, Grade.new(1))
或者,由于默认值,您取消了等级,以后再指定:
student = Student.new("Test", 18)
# later
student.grade = Grade.new(1)
这段代码将从头重写:1。Ruby中的getter和setter不应该以这个
get
和set
垃圾作为前缀。2. <代码>成绩不应从学生
中派生。3.应提供关联学生
和年级
的代码。我建议你学习一些Ruby教程,否则你会写一些毫无意义的东西,而这些东西是无法纠正的。Ruby中的getter和setter不应该以这个get
和set
垃圾作为前缀。2. <代码>成绩不应从学生
中派生。3.应提供关联学生
和年级
的代码。我建议你学习一些Ruby教程,否则你写的东西毫无意义,无法纠正。谢谢,我如何访问与学生相关的分数值我正在尝试类似puts Student.grade.gradeputs Student.grade.value
谢谢,我如何访问与学生关联的成绩值我正在尝试类似puts Student.grade.gradeputs Student.grade.value