接口的应用案例

测试类
package top.xiaoguyouqu.interface1;

public class Test {
    public static void main(String[] args) {
//        完成班级学生信息管理的案例
        ClassManager manager = new ClassManager();
        manager.printMsg();
        manager.printSore();


    }
}

班级管理类
package top.xiaoguyouqu.interface1;

import java.util.ArrayList;

public class ClassManager {
    ArrayList<Student> students = new ArrayList<>();

    //面向接口编程
    StudentOperator operator = new Operator1();
//    StudentOperator operator = new Operator2();

    public ClassManager() {
        students.add(new Student("迪丽热巴","女",66));
        students.add(new Student("阿普杜拉","男",77));
        students.add(new Student("小红","女",88));
        students.add(new Student("小李","男",87));
        students.add(new Student("小兰","女",99));
    }

    //打印所有学生信息
    public void printMsg(){
        operator.printAllMsg(students);

    }

    //打印全班全部平均分
    public void printSore(){
        operator.printAvgSore(students);

    }
}


学生类
package top.xiaoguyouqu.interface1;

public class Student {
    private String name;
    private String gender;
    private int score;

    public Student() {
    }

    public Student(String name, String gender, int score) {
        this.name = name;
        this.gender = gender;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }
}


接口类
package top.xiaoguyouqu.interface1;

import java.util.ArrayList;

public interface StudentOperator {
    public void printAllMsg(ArrayList<Student> students);
    public void printAvgSore(ArrayList<Student> students);
}

实现类1
package top.xiaoguyouqu.interface1;

import java.util.ArrayList;

public class Operator1 implements StudentOperator {

    //重写打印信息
    @Override
    public void printAllMsg(ArrayList<Student> students){
        System.out.println("-------------班级学生信息----------------");
        for (int i = 0; i < students.size() ; i++) {
            Student s = students.get(i);
            System.out.println("姓名:" + s.getName()  + "\t性别:" + s.getGender() + "\t成绩:" + s.getScore());
        }
        System.out.println("-----------------------------------------");

    }

    //重写平均分信息
    @Override
    public void printAvgSore(ArrayList<Student> students) {
        double sum = 0;
        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);
            sum += s.getScore();
        }
        System.out.println("平均分:" + sum/students.size());

    }



}

实现类2
package top.xiaoguyouqu.interface1;

import java.util.ArrayList;

public class Operator2 implements StudentOperator {

    //重写打印信息
    @Override
    public void printAllMsg(ArrayList<Student> students){
        int count = 0;
        System.out.println("-------------班级学生信息---------------");
        for (int i = 0; i < students.size() ; i++) {
            Student s = students.get(i);
            System.out.println("姓名:" + s.getName() + "\t性别:" + s.getGender() + "\t成绩:" + s.getScore());
            if (s.getGender() == "男"){
                count++;
            }
        }
        System.out.println("男生人数:" + count + "\t女士人数:" + (students.size()-count));
        System.out.println("----------------------------------------");

    }

    //重写平均分信息
    @Override
    public void printAvgSore(ArrayList<Student> students) {
        double sum = 0;
        double max = students.get(1).getScore();
        double min = students.get(1).getScore();

        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);
            sum += s.getScore();
            if (s.getScore() > max){
                max = s.getScore();
            }
            if (s.getScore() < min){
                min = s.getScore();
            }
        }
        System.out.println("最高分:" + max + "最低分:" + min);
        System.out.println("去掉最高分,最低分后的平均分:" + (sum - max - min)/(students.size() - 2));

    }


}

测试结果图


接口总结

1.接口和类,抽象类是一个层次的概念,命名规则相同。
2.修饰符如果是public,则该接口在整个项目中可见。如果省略修饰符,该接口只在当前包中可见。
3.接口中可以定义常量,不能定义变更。接口中的属性都默认用“publi static final”修饰,即接口中的属性都是全局静态常量,接口中的常量必须在定义时指定初始值。
4.接口中的所有方法都是抽象方法,接口中的方法都默认为public。
和抽象接口一样,接口同样不能实例化,接口中不能有构造方法。
5.接口之间可以通过extends实现继承关系,一个接口刻可以继承多个接口,当接口不能继承类。
6.类只能继承一个父类,但可以通过implement实现多个接口。一个类必须实现接口的全部方法,否则必须定义为抽象类。若一个类在继承父类的同时又实现了多个接口,extends必须位于implement之前

最后修改:2024 年 03 月 08 日
如果你觉得作者像乞讨的,你可以随意打赏他一点。