GithubHelp home page GithubHelp logo

Comments (5)

szeying02 avatar szeying02 commented on August 11, 2024

The attributes can be super() into RecycledLoader even if you use private final. Furthermore, I believe that we defined the getter methods to access these attributes in the sub-class RecycledLoader, so there really isn't a need to use protected final. This combined with the possibility that codecrunch would automatically reject all non- private final attributes (part of CS2030 scope I think), is why protected final wouldn't work. Hope this helps!

from 2122-s2.

Swagston20 avatar Swagston20 commented on August 11, 2024

Thanks, I know what you said can be done. But why not make life easier and use protected final so that the sub class can access. I just want to know the rationale in encouraging us to not use protected final

from 2122-s2.

jingyulim1 avatar jingyulim1 commented on August 11, 2024

I think it is to strictly maintain the abstraction barrier. In case we have more subclasses in the future and we may not want the other subclasses to be able to access the information. Also, if we directly use the attribute from loader, if we were to change the representation in loader, then we may have to make neccessary changes everywhere else too.

from 2122-s2.

haoyangw avatar haoyangw commented on August 11, 2024

For me I think it's cos the attributes in Loader are associated/shared with all Loaders, not just any specific subclass like RecycleLoader? So by restricting us to private final in the superclass Loader, this reminds us to distinguish between declaring e.g. Loader loader = new RecycleLoader() instead of RecycleLoader recycleLoader = new RecycleLoader() if we are trying to access shared attributes, and declaring RecycleLoader recycleLoader = new RecycleLoader() if we want to access the extended variables and methods (only) RecycleLoader provides(but Loader doesn't)?

This kind of sounds like Dependency Inversion Principle in a sense, cos you depend on the superclass Loader wherever possible instead of depending on RecycleLoader directly. This way your code that deals with shared attributes doesn't have to change if you only change the subclass(es) like RecycleLoader, you just update code that access extended attributes

from 2122-s2.

undeser avatar undeser commented on August 11, 2024

It is to maintain the Abstraction Barrier.
Personally, it is a habit of mine to create getter functions, that way I can "legally" refer to the private attributes.

from 2122-s2.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.