我创建了一个类似于的Student类
public class Student {
protected String name;
protected String surName;
protected long id;
protected String email;
}
public interface IGraduated {
public void doSmth();
}
public class GraduatedStudent extends Student implements IGraduated{
private String companyInfo;
private double salaryInfo;
@Override
public void doSmth() {
System.out.println(this.name + " is working on the " + this.companyInfo);
}
我希望doSmth方法是专门针对研究生的。所以我把它分离成一个接口。
我想这样使用,我知道这是不可能的,也不适合oop设计。但是在这种情况下我能做些什么吗?
Student stu = new GraduatedStudent();
stu.doSmth();
我在这里可能错了,但如果你不明确需要接口,我就不会为你的结局走这条路。
我不想使用接口只声明一个特定于一个类的方法,而是简单地在子类中声明该方法,然后从那里开始:
public class Student {
private String name;
private String surName;
private long id;
private String email;
private bool hasGraduated;
public Student(){
...
}
public void GraduationDay {
if(hasGratudated){
GratuatedStudent gratStudent = new GratuatedStudent(//studentInfos + job + salary);
gratStudent.doSmtg();
}
}
}
public class GraduatedStudent extends Student {
private String name;
private String surName;
private long id;
private String email;
private String companyInfo;
private double salaryInfo;
public GratuatedStudent(){
...
}
public void doSmth() {
System.out.println(this.name + " is working on the " + this.companyInfo);
}
}
我知道它可以优化,但重要的是总的想法。当你有(或者你知道你会有(多个具有相似方法的类时,应该使用接口。你的逻辑中没有什么必然是错误的,但对于你需要完成的事情来说,它有点太复杂了。
此外,我知道并不是每个人都这么认为,但尽量只在必要时使用受保护的。它可能会在代码中打开漏洞(某些类/方法能够更改这些变量的值(。