如何通过方法替换java中的电子邮件

如何通过方法替换java中的电子邮件,java,Java,我第一次尝试这个。我需要能够为子类学生和子类教师替换电子邮件输入电子邮件后,我有一个父类和父类,这是我认为我需要添加我的changeEmail方法的地方。我可能离这里有一段距离,但我可以使用stringBuilder吗?或者有更简单的方法吗?说到这个,真是个傻瓜 子类- public class Teacher extends Member { private String qualifications; public Teacher(String name, String

我第一次尝试这个。我需要能够为子类学生和子类教师替换电子邮件输入电子邮件后,我有一个父类和父类,这是我认为我需要添加我的changeEmail方法的地方。我可能离这里有一段距离,但我可以使用stringBuilder吗?或者有更简单的方法吗?说到这个,真是个傻瓜


子类-

  public class Teacher extends Member
  {

  private String qualifications;


 public Teacher(String name, String email, String qualifications)
 {
 super(name, email);
 this.qualifications = qualifications;
 }


 public String getQualifications()
 {
    return qualifications;
 }


 public String toString()
 {

    StringBuffer details = new StringBuffer();
    details.append(super.getName());
    details.append(' ');

    if(qualifications != null && qualifications.trim().length() > 0) {
        details.append("(" + qualifications + ")");
        details.append(' ');
    }
    details.append(super.getEmail());
    return details.toString();
    }
    public class Student extends Member
    {

  private int attendance;


  public Student(String name, String email)
  {
  super(name, email);
 this.attendance = 0;
 }


 public int getAttendance()
 {
    return attendance;
 }


 public void markAttendance(int attendance)
 {
    this.attendance += attendance;
 }


 public void print()
 {
    System.out.println(super.getName() + " (" + attendance + ")");
 }
 }
} 子类-

  public class Teacher extends Member
  {

  private String qualifications;


 public Teacher(String name, String email, String qualifications)
 {
 super(name, email);
 this.qualifications = qualifications;
 }


 public String getQualifications()
 {
    return qualifications;
 }


 public String toString()
 {

    StringBuffer details = new StringBuffer();
    details.append(super.getName());
    details.append(' ');

    if(qualifications != null && qualifications.trim().length() > 0) {
        details.append("(" + qualifications + ")");
        details.append(' ');
    }
    details.append(super.getEmail());
    return details.toString();
    }
    public class Student extends Member
    {

  private int attendance;


  public Student(String name, String email)
  {
  super(name, email);
 this.attendance = 0;
 }


 public int getAttendance()
 {
    return attendance;
 }


 public void markAttendance(int attendance)
 {
    this.attendance += attendance;
 }


 public void print()
 {
    System.out.println(super.getName() + " (" + attendance + ")");
 }
 }

超类-

 public class Member

 {

 private String email;

 private String name;

 public Member(String name, String email)
 {
   this.name = name;
   this.email = email;
 }


 public String getEmail()
 {
    return email;
 }

 public String getName()
 {
    return name;
 }

 public String changeEmail()
 {
    //..........
 }

 }

因为changeEmail是超类中的一个公共方法,所以子类也可以访问它<代码>学生(以及
教师
成员

public String changeEmail(String newEmailAddress) {
    String old = email;
    this.email = newEmailAddress;
    return old;
}
我更改的是添加一个参数(字符串newEmailAddress),然后将新值设置为电子邮件实例字段


(编辑:我更新了答案以返回旧的电子邮件地址。我不知道为什么这样的方法会返回任何东西,但无论如何…)

这就是所谓的继承,基本上如果您有一些共享变量,您可以使用某个父类,并使用关键字
extends
创建一些子类

继承父类的所有子类都可以有自己的类变量,但也有父变量

在你的例子中,你可以这样想象图表——很明显,不是吗?

所以。。。 父类
成员
具有以下类变量:
-字符串:邮件
-字符串:名称

您有两个子类-
Student
Teacher

Teacher
class变量:

  • 资格
  • 邮件,名称(从父级继承!)
学生
班级变量:

  • 出席
  • 邮件,名称(从父级继承!)
注意-使用关键字
super
您正在从家长处调用构造函数(或简单地“class”其他方法),因此在
Teacher
Student
类中,您将调用以下方法:

public Member(String name, String email) {
   this.name = name;
   this.email = email;
  }
Teacher teacher1 = new Teacher("foo", "foo@foo.foo", "whateverFoo");
teacher1.changeEmail("someNewFoo@foo.foo"); //parent method
teacher1.changeEmailWithReturnOld("someNewFoo@foo.foo"); //Child method
要更改电子邮件,您需要以下内容

1) 在父类中实现方法

2) 可选-添加对子类的调用,对于在类之外的使用,还可以添加一些外部方法(如果没有外部方法,您仍然可以使用公共父类方法)

例如

在父级中

public void changeEmail(String newEmail) {
          this.email = newEmail;          
}

public String changeEmailWithReturnOld(String newEmail) {
          String oldMail = this.email;
          changeEmail(newEmail); //calling above
          return oldMail;
}
在儿童中

public String changeTheMailWithReturnOld(String newMail) {
        return super.changeEmailWithReturnOld(newMail); //super means super class, parent
}
清楚吗?:)

然后您可以调用以下命令:

public Member(String name, String email) {
   this.name = name;
   this.email = email;
  }
Teacher teacher1 = new Teacher("foo", "foo@foo.foo", "whateverFoo");
teacher1.changeEmail("someNewFoo@foo.foo"); //parent method
teacher1.changeEmailWithReturnOld("someNewFoo@foo.foo"); //Child method

我不确定我是否理解。因此,您只需在
Member
中的
changemail
方法中添加相关代码即可?那就是
this.email=email。嗨,是的,我不知道我需要在changeEmail中添加什么才能在输入和程序运行后更改学生或教师的电子邮件。这有点夸张。。但是请随意接受答案:)注意,该方法的定义是使用字符串类型的返回值,因此您必须添加返回语句-例如旧的或新的e-mail@xxxvodnikxxx你是对的。有点快。我不知道那里应该归还什么??我不知道,除了无效的返回类型对我来说没有任何意义:D,但让我说,旧邮件是好的,例如,对于一些存档或任何东西,可以