- 我有一个拥有许多受保护数据成员和处理这些数据成员的许多不同函数组的类。
- 我想分开这些类的子类,以便不同的方法组将在不同的子类。
1.I有这个类Java中按组分类的单独方法
class Student {
protected String name;
protected int courseNumber;
protected TreeMap<String, Integer> marks;
protected double successRate;
protected Pair<String, Integer>[] conferences; //name, place
void setName(String name) { this.name = name; }
//... setters
String getName() { return name; }
//... getters
//...constructors
int getHashCode() {
int res = 0;
//...
return res;
}
boolean less (Student b) {
boolean ls = false;
//...
return ls;
}
//... functions to compare objects
String lastConferenceName() {
return conferences[conferences.length - 1].getKey();
}
//... some last data
double marksMedium(String[] s) {
int res = 0;
for (int i = 0; i < s.length; i++)
res += marks.get(s[i]);
return (double) res/s.length;
}
//... some medium functions
//... some group of functions
//... some other groups
}
我想要做这样的事情
class Student{
protected String name;
protected int courseNumber;
protected TreeMap<String, Integer> marks;
protected double successRate;
protected Pair<String, Integer>[] conferences; //name, place
void setName(String name) { this.name = name; }
//... setters
String getName() { return name; }
//... getters
//...constructors
}
class StudentComparator{
int getHashCode() {
int res = 0;
//...
return res;
}
boolean less (Student b) {
boolean ls = false;
//...
return ls;
}
//... functions to compare objects
}
class LastStudentInfoGetter{
String lastConferenceName() {
return conferences[conferences.length - 1].getKey();
}
//... some last data
}
class StudentMediumGetter{
double marksMedium(String[] s) {
int res = 0;
for (int i = 0; i < s.length; i++)
res += marks.get(s[i]);
return (double) res/s.length;
}
//... some medium functions
}
class SomeStudentFunctions{
//... some group of functions
}
///... SomeOtherClasses
这将是更好,如果这些类不使用getter和setter方法
Upd
例如,我有这个类
class Handler{
void handle(){
Student s = new Student();
///////........
System.out.println(s.lastConferenceName());
System.out.println(s.getHashCode());
}
}
而且我要手柄()(或类似的东西),改造后的工作
注意lastConferenceName()和GetHashCode()是在不同的组
您可以使用这些方法创建接口,然后让'Student'实现它们。 – markspace
我希望学生班更小。我不想在学生类中实现所有的方法 – PolyProgrammist
如果你想访问它们,你必须使它们的访问范围受到保护或公开。我将添加一个代码.. –