在其他类中访问许多方法需要什么构造函数?

时间:2013-09-22 04:29:12

标签: java testing constructor

我在尝试使用4个类创建简单测试时遇到了麻烦。我想做一些简单的事情,我创建一个用户,它可以访问登录,发送电子邮件和注销(作为示例)。我的问题是我不太清楚在第2,第3,第4课的内容。 AppUser类我希望能够访问许多类(即AppMenu,EmailPage等)。因此扩展不起作用。

我的构造函数应该如何让AppUser访问其他类中的许多方法?或者我还需要其他东西。非常感谢帮助提高我的理解。

/**   First class **/
public class AppTest {
  public static void main(String[] args) {
    AppUser user = new AppUser();
    user.login();
    user.sendEmail();      
    user.logOut();  
    }
}


/** Second class **/
public class AppUser {  
}


/** Third class **/
public class AppMenu {      
  public void login() {
    System.out.println("I logged in!!!");
  }

  public void logOut() {
    System.out.println("I logged out!!!");
  }
}


/** Fourth class **/
public class EmailPage {   
    public void sendEmail() {
      System.out.println("Send Email"); 
    }

}

2 个答案:

答案 0 :(得分:0)

将它们作为类成员变量。见下文实施:

public class AppTest {
  public static void main(String[] args) {
    AppUser user = new AppUser();
    user.login();
    user.sendEmail();      
    user.logOut();  
    }
}


/** Second class **/
public class AppUser {  
   private AppMenu am;
   private EmailPage email;

   public AppUser(){
     am = new AppMenu();
     email = new EmailPage();
   }

   public void login(){
     am.login();
   }

   public void logout(){
     am.logout();
   }

   public void sendEmail(){
      email.sendEmail();
   }


}


/** Third class **/
public class AppMenu {      
  public void login() {
    System.out.println("I logged in!!!");
  }

  public void logOut() {
    System.out.println("I logged out!!!");
  }
}


/** Fourth class **/
public class EmailPage {   
    public void sendEmail() {
      System.out.println("Send Email"); 
    }

}

因此,您希望有一个能够登录,注销和发送电子邮件的用户。因此,您需要将所有这些功能包装在用户类中,这意味着如果您对电子邮件发送和登录/注销功能进行任何更改,那么调用用户类的类不会受到影响。

答案 1 :(得分:0)

private AppMenu appmenu=null;
private EmailPage emailpage = null;

APPUSER(){     appmenu = new AppMenu():         emailpage = new EmailPage();

}

public void login(){     appmenu.login(); }

public void sendEmail(){      emailpage.sendEmail(); }

您必须在AppUser课程中定义这些方法,以便像您一样进行访问