系部网站建设中期检查表,昵图网免费素材图库,深圳app开发公司报价,开一个网站建设公司需要什么软件接口 既然接口中的所有方法都需要重写#xff0c;那么我不干脆直接写一个类#xff0c;不写接口就完事了呢 接口定义的是一种特征#xff0c;告诉使用者和程序#xff0c;这个实现了这个类型的接口拥有哪些功能 如果一个类实现了runnable#xff0c;那么这个类就可以用来定…接口 既然接口中的所有方法都需要重写那么我不干脆直接写一个类不写接口就完事了呢 接口定义的是一种特征告诉使用者和程序这个实现了这个类型的接口拥有哪些功能 如果一个类实现了runnable那么这个类就可以用来定义线程 接口的变量默认是常量要有初始值接口的方法默认是抽象方法因为接口是不能直接实例化对象的所以不能有构造器和代码块在jdk1.8之后接口中可以有默认方法 用default修饰 可以有方法体 接口 public interface SchoolPeople {// 默认是public static final 接口的成员变量都是常量String schoolName 清华大学;// 默认是public abstract 接口的方法默认 是抽象方法void writeContent();// 在jdk1.8之后接口中可以有默认方法 用default修饰 可以有方法体default void write(){System.out.println(标题);writeContent();System.out.println(结束);}}实现类1 public class Student implements SchoolPeople{Overridepublic void writeContent() {System.out.println(学生写作业);}
}实现类2 public class Teacher implements SchoolPeople{Overridepublic void writeContent() {System.out.println(老师批改作业);}
}java不支持抽象类的多继承但是能够接口多实现 不支持多继承是因为子类继承父类的方法两个父类都有方法体不知道调用哪一个支持多实现是因为两个几口都没有方法体使用的都是子类重写之后的方法体 public interface SchoolPeople {// 默认是public static final 接口的成员变量都是常量String schoolName 清华大学;// 默认是public abstract 接口的方法默认 是抽象方法void writeContent();// 在jdk1.8之后接口中可以有默认方法 用default修饰 可以有方法体default void write(){System.out.println(标题);writeContent();System.out.println(结束);}}接口和抽象类 接口解决了类只能单继承的问题 demo 设计一个计算类实现两种计算方式 计算全班平均成绩计算女生平均成绩 学生类 lombok.Data
AllArgsConstructor
public class Student {private String name;private String gender;private double score;
}班级管理类 Data
public class ClassManager {private StudentOperator studentOperator;private ListStudent students;public double calAverageScore() {return studentOperator.calAverageScore(students);}}操作接口 public interface StudentOperator {double calAverageScore(ListStudent students);
}实现类1 public class StudentOperatorImpl1 implements StudentOperator{Overridepublic double calAverageScore(ListStudent students) {return students.stream().mapToDouble(Student::getScore).average().orElse(0);}
}实现类2 public class StudentOperatorImpl2 implements StudentOperator{Overridepublic double calAverageScore(ListStudent students) {// 只计算女生的平均分return students.stream().filter(student - student.getGender().equals(女生)).mapToDouble(Student::getScore).average().orElse(0);}
}使用 传递不同操作实现类 ArrayListStudent students new ArrayList();
students.add(new Student(古力拉扎, 女生, 90));
students.add(new Student(古力娜扎, 女生, 95));
students.add(new Student(马尔扎哈, 男生, 100));
students.add(new Student(玛玛哈哈, 男生, 100));ClassManager classManager new ClassManager();
classManager.setStudents(students);
classManager.setStudentOperator(new StudentOperatorImpl1());
System.out.println(全班平均分 classManager.calAverageScore());classManager.setStudentOperator(new StudentOperatorImpl2());
System.out.println(女生平均分 classManager.calAverageScore());