рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдирд╛ рдПрдХ рдЬрд╛рдирдмреВрдЭрдХрд░ рдкрд╕рдВрдж рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ (рдореИрдВрдиреЗ super$private$foo()
рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдУрдУрдкреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реИ рдХрд┐ рдЙрдк-рд╡рд░реНрдЧ рдЕрдкрдиреЗ рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ (рдПрд╕) рдХреЗ рдирд┐рдЬреА рддрд░реАрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╡рд╛рдХрдИ рдпрд╣ рдЗрддрдиреА рдмреБрд░реА рдмрд╛рдд рд╣реЛрдЧреА? рдЖрдЦрд┐рд░рдХрд╛рд░, рд╡рд┐рд░рд╛рд╕рдд рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд░реНрдЧ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рддрд░реАрдХрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд▓реЛрдЧреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╡рд░реНрдЧ рдХреЗ рд╕рднреА рдирд┐рдЬреА рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рддреЛ рдЙрдкрд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП "рдЦреЛ" / рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛрдб рджреЛрд╣рд░рд╛рд╡ рдирд╣реАрдВ рд╣реИ (рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ рдирд┐рдЬреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ _again_ рдХреЛ рдирд┐рдЬреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрдкрд╡рд░реНрдЧ)?
рд╕рд┐рд░реНрдл рдореИрдВ рд╣реА рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреЗ рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рд╕реЗ рдЙрдк-рд╡рд░реНрдЧ рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреБрдЫ "рдЖрдВрддрд░рд┐рдХ" рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реВрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдк рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ) рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реБрд▓рдн)ред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ A
, bar()
рдореЗрдВ рдПрдХ рд╢реБрджреНрдз рдЖрдВрддрд░рд┐рдХ рдЪрд░рд┐рддреНрд░ рд╣реИ рдФрд░ рдХреБрдЫ рдлрд╝реАрд▓реНрдб рдорд╛рдиреЛрдВ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдпрд╣ B
рд▓рд┐рдП рд╕реБрд▓рдн рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореБрдЭреЗ B
рдореЗрдВ рдареАрдХ рдЙрд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
require("R6")
A <- R6Class(
classname = "A",
public = list(
foo = function() {
"foo"
}
),
private = list(
bar = function() {
"bar"
}
)
)
B <- R6Class(
classname = "B",
inherit = A,
public = list(
foobar = function() {
print(super$foo())
print(super$private$bar())
}
)
)
x <- B$new()
x$foobar()
super
, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА рджреЛрдиреЛрдВ рддрд░реАрдХреЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рддреЛ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдк рдмрд╕ super$bar()
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрд╣! рдЙрд╕ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!
рдмрдврд╝рд┐рдпрд╛, рдЦреБрд╢реА рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
super
, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА рджреЛрдиреЛрдВ рддрд░реАрдХреЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рддреЛ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдк рдмрд╕super$bar()
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред