接口

一、接口概述

在这里插入图片描述

二、接口的好处

(1),弥补了类单继承的不足,一个类可以实现多个接口。
(2),让程序可以面向接口编程。这样程序员就可以灵活方便的切换各种业务的实现
在这里插入图片描述

三、接口案例

在这里插入图片描述

package jiekouanli;

import interfaceDay5.C;

public class Test {
    public static void main(String[] args) {
        ClassManger clazz=new ClassManger();
       clazz.print1();
       clazz.print2();
    }
}

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;
    }
}
package jiekouanli;

import java.util.ArrayList;

public class ClassManger {
    private ArrayList<Student>students=new ArrayList<>();
    private StudentOperator studentOperator=new StudentOperatorlmpl2();
    public ClassManger() {
        Student s1 = new Student("神里绫华", '女', 80);
        Student s2 = new Student("甘雨", '女', 82);
        Student s3 = new Student("钟离", '男', 99);
        Student s4 = new Student("重云", '男', 78);
        students.add(s1);
        students.add(s2);
        students.add(s3);
        students.add(s4);
    }

        //打印全班全部学生信息
        public void print1(){
            studentOperator.print1(students);
    }
    //打印全班全部同学的平均分
    public void print2(){
        studentOperator.print2(students);
    }

}
package jiekouanli;

import java.util.ArrayList;

public interface StudentOperator {
    void print1(ArrayList<Student> students);
    void print2(ArrayList<Student> students);
}

package jiekouanli;

import java.util.ArrayList;

public class StudentOperatorlmpl1 implements StudentOperator{

    @Override
    public void print1(ArrayList<Student> students) {
        for (int i = 0; i <students.size() ; i++) {
           Student s=students.get(i);
            System.out.println("姓名:"+s.getName()+"性别:"+s.getSex()+"得分"+s.getScore());
        }
    }

    @Override
    public void print2(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());
    }
}

package jiekouanli;

import java.util.ArrayList;

public class StudentOperatorlmpl2 implements StudentOperator{
    int nan=0;
    int nv=0;
    @Override
    public void print1(ArrayList<Student> students) {
        for (int i = 0; i <students.size() ; i++) {
            Student s = students.get(i);
            System.out.println("姓名:" + s.getName() + "性别:" + s.getSex() + "得分" + s.getScore());
            if (s.getSex() == '男') {
                nan++;
            } else {
                nv++;
            }
        }
            System.out.println("男生人数是:"+nan);
            System.out.println("女生人数是:"+nv);

        System.out.println("--------------------------------------------");
    }

    @Override
    public void print2(ArrayList<Student> students) {
        double allscore=0.0;
        double max=students.get(0).getScore();
        double min=students.get(0).getScore();
        for (int i = 0; i <students.size(); i++) {
            Student s=students.get(i);
            if (s.getScore()>max){
                max= s.getScore();
            }
           if (s.getScore()<min){
               min=s.getScore();
           }
            allscore+= s.getScore();
        }
        System.out.println("学生的最高分是:"+max);
        System.out.println("学生的最低分是:"+min);
        double a=allscore-max-min;
        System.out.println("平均分是:"+a/(students.size()-2));
    }
}

四、接口新增的三种方法形式

1、默认方法:必须用default修饰,默认会被public修饰
*是一种实例方法,必须用实现类的对象来访问
2、私有方法:必须用private来修饰(从JDK9开始才支持的)
*是一种实例方法,只能在接口中调用
3、静态方法:必须用static修饰,默认会被public修饰
*访问时,必须用接口名访问
在这里插入图片描述
在这里插入图片描述

五、接口得多继承及注意事项

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值