상속으로 기능 전파하기

R에서 S3와 R6로 배우는 Object-Oriented Programming

Richie Cotton

Data Evangelist at DataCamp

ch4_1-propagating-functionality-with-inheritance.004.png

R에서 S3와 R6로 배우는 Object-Oriented Programming

 

thing_factory <- R6Class(
  "Thing",
  private = list(
    a_field = "a value",
    another_field = 123
  ),
  public = list(
    do_something = function(x, y, z) {
      # do something here
    }
  )
)
R에서 S3와 R6로 배우는 Object-Oriented Programming

ch4_1-propagating-functionality-with-inheritance.007.png

R에서 S3와 R6로 배우는 Object-Oriented Programming

 

child_thing_factory <- R6Class(
  "ChildThing",
  inherit = thing_factory

public = list( do_something_else = function() { # more functionality } )
)
R에서 S3와 R6로 배우는 Object-Oriented Programming

ch4_1-propagating-functionality-with-inheritance.012.png

R에서 S3와 R6로 배우는 Object-Oriented Programming

ch4_1-propagating-functionality-with-inheritance.015.png

R에서 S3와 R6로 배우는 Object-Oriented Programming

ch4_1-propagating-functionality-with-inheritance.016.png

R에서 S3와 R6로 배우는 Object-Oriented Programming

 

a_thing <- thing_factory$new()

class(a_thing)
"Thing" "R6"  
inherits(a_thing, "Thing")
TRUE
inherits(a_thing, "R6")
TRUE
R에서 S3와 R6로 배우는 Object-Oriented Programming
a_child_thing <- child_thing_factory$new()

class(a_child_thing)
"ChildThing" "Thing"      "R6"      
inherits(a_child_thing, "ChildThing")
TRUE
inherits(a_child_thing, "Thing")
TRUE
inherits(a_child_thing, "R6")
TRUE
R에서 S3와 R6로 배우는 Object-Oriented Programming

요약

  • 상속으로 기능을 전파합니다
  • R6Class()inherit 인자를 사용합니다
  • 자식은 부모의 기능을 받습니다
  • ... 반대는 아닙니다
R에서 S3와 R6로 배우는 Object-Oriented Programming

Let's practice!

R에서 S3와 R6로 배우는 Object-Oriented Programming

Preparing Video For Download...