【问题标题】:Confusion over referencing class objects (child classes) and accessing methods对引用类对象(子类)和访问方法的困惑
【发布时间】:2018-05-26 04:47:25
【问题描述】:

是否可以引用(如果这就是它正在做的事情)一个类对象,例如: private SomeClass someclass;如下图?它工作正常,但它会破坏封装吗?书是阅读的孩子,阅读是内容的孩子。

另外,这样做好吗? ((游戏) c.getValue()).returnNameAndOs()); OS 类对象位于 Game 类对象中。

我只关心做事是否正确,或者做得更好。

public abstract class Content {

  Private List<Comment> Review = new ArrayList<Comment>();

  private Reading reading; // is this bad practice
  private Book book; 

  private String ID;
  private String Application_Name;

  private int No_of_Downloads = 0;
  private double Price = 0;

  // overridden
  public Content(String iD, String application_Name, double price) {
    super();
    ID = iD;
    Application_Name = application_Name;
    Price = price;
  }

// overridden 
  public Content(String iD, String application_Name) {
    super();
    ID = iD;
    Application_Name = application_Name;
  }

  public void addReviews(Comment a) {

    this.Review.add(a);
    System.out.println(a.getusrname()+" added review on 
    "+this.getApplication_Name()+": "+a.getUsrComment());
  }
// etc...
} 

【问题讨论】:

  • 聚合和组合是关联的形式。在您的情况下,您正在参考另一个类是组合。封装表示您应该将字段和相关方法保留在同一个类中。但是你可以在其他类中调用这些方法。

标签: java reference parent-child accessor


【解决方案1】:

如果这是一个抽象类,你不能初始化它,因此不使用构造函数,

我相信 cmets “评论”列表与内容相关联。它应该是私有的,并且像其他变量一样具有 getter setter

【讨论】:

  • 它是一个抽象类。我刚刚更新了我的代码。 Content 中有两个构造函数,它们在各种子类中被覆盖(添加了实例变量)。这是我遇到麻烦的那些添加的即时变量。有一个名为 Comments 的类(它是对“reviews”的回复),它带有一个引用自身 的 ArrayList。评论/评论方面工作正常。
猜你喜欢
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
  • 2012-03-22
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多