public interface AA {
//成员变量(常量)
String SCHOOL_NAME="海事";
//成员方法(抽象方法)
void test();
}
接口不能创建对象;接口是用来被类实现的,实现接口的类称为实现类;
一个类可以实现多个接口(接口可以理解为干爹),实现类实现多个接口,必须重写完全部接口的全部抽象对象方法,否则实现类需要定义成抽象类。
接口的好处:
弥补了类单继承的不足,一个类同时可以实现多个接口。
让程序可以面向接口编程,这样程序员就可以灵活方便的切换各种业务实现。
public class Student{
private String name;
private char sex;
private double score;
public Student() {
}
public Student(String name, char sex, double score) {
this.name = name;
this.sex = sex;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
}
public class ClassManager {
private ArrayList<Student> students=new ArrayList<>();
private StudentOperator studentOperator=new StudentOperatorImpl1();
//private StudentOperator studentOperator=new StudentOperatorImpl2();
public ClassManager() {
students.add(new Student("zhang",'女',99));
students.add(new Student("wang",'男',88));
students.add(new Student("li",'女',91));
students.add(new Student("feng",'女',80));
}
//打印全班学生信息
public void printInfo(){
studentOperator.printAllInfo(students);
}
//打印全班全部学生的平均分
public void printScore(){
studentOperator.PrintAverageScore(students);
}
}
public interface StudentOperator {
void printAllInfo(ArrayList<Student> students);
void PrintAverageScore(ArrayList<Student> students);
}
public class StudentOperatorImpl1 implements StudentOperator{
@Override
public void printAllInfo(ArrayList<Student> students) {
System.out.println("---------全班全部学生信息如下---------");
for(int i=0;i<students.size();i++){
Student s=students.get(i);
System.out.println("姓名:"+s.getName()+",性别"+s.getSex()+",成绩"+s.getScore());
}
System.out.println("---------------------------------");
}
@Override
public void PrintAverageScore(ArrayList<Student> students) {
double allScore=0.0;
for(int i=0;i<students.size();i++){
Student s=students.get(i);
allScore+=s.getScore();
}
System.out.println("平均分:"+(allScore)/students.size());
}
}
public class StudentOperatorI