Java 对引用类对象(子类)和访问方法的混淆

Java 对引用类对象(子类)和访问方法的混淆,java,reference,parent-child,accessor,Java,Reference,Parent Child,Accessor,引用一个类对象(如果它正在这样做的话)可以吗:private SomeClass SomeClass;如下图所示?它工作正常,但它会破坏封装吗?书是阅读之子,阅读是内容之子 还有,这样做可以吗?((游戏)c.getValue()).returnNameAndOs());OS类对象位于游戏类对象内 我只关心把事情做对,或者做得更好 public abstract class Content { Private List<Comment> Review = new ArrayLis

引用一个类对象(如果它正在这样做的话)可以吗:private SomeClass SomeClass;如下图所示?它工作正常,但它会破坏封装吗?书是阅读之子,阅读是内容之子

还有,这样做可以吗?((游戏)c.getValue()).returnNameAndOs());OS类对象位于游戏类对象内

我只关心把事情做对,或者做得更好

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...
} 
公共抽象类内容{
Private List Review=new ArrayList();
私人阅读;//这种做法不好吗
私人书籍;
私有字符串ID;
私有字符串应用程序名称;
私有int No_of_下载=0;
私人双价=0;
//凌驾
公共内容(字符串iD、字符串应用程序名称、双倍价格){
超级();
ID=ID;
应用程序名称=应用程序名称;
价格=价格;
}
//凌驾
公共内容(字符串iD、字符串应用程序名称){
超级();
ID=ID;
应用程序名称=应用程序名称;
}
公众评论(评论a){
本条。审查。添加(a);
System.out.println(a.getusrname()+“添加了对
“+this.getApplication_Name()+”:“+a.getUsrComment());
}
//等等。。。
} 

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


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

聚合和组合是关联的形式。在您的例子中,您引用的是另一个类,即composition。封装要求将字段和相关方法保持在同一个类中。但您可以在其他类中调用这些方法。它是一个抽象类。我刚刚更新了我的代码。内容中有两个构造函数在不同的子类中被重写(添加了实例变量)。正是这些添加的即时变量让我遇到了麻烦。有一个名为Comments(是对“reviews”的回复)的类,它有一个引用自身的ArrayList。评论方面的工作很好。