0

我在尝试用 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"); 
    }

}
4

2 回答 2

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"); 
    }

}

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

于 2013-09-22T04:31:50.150 回答
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才能像您一样访问

于 2013-09-22T04:34:39.983 回答