feat(class30,class32): 接口定义,实现类

- 在 class30 包中添加了接口 A 和 B,以及实现类 C 和测试类 Test
- 在 class32 包中添加了学生信息处理的接口和实现类,包括 ClassDataInter、ClassDataInterImpl1、ClassDataInterImpl2 和 Student 类
- 实现了学生信息的打印和平均分计算等功能
This commit is contained in:
2025-07-19 21:40:34 +08:00
parent ffa2bb2055
commit b426565aba
8 changed files with 153 additions and 0 deletions

10
src/class30/A.java Normal file
View File

@@ -0,0 +1,10 @@
package class30;
public interface A {
// JDK8之前接口中只能定义常量和抽象方法
String SCHOOL_NAME = "黑马程序员";
// public static final String SCHOOL_NAME = "黑马程序员"; // 可省略String的前缀
// public abstract void run(); // 可省略abstract
void run();
String go();
}

5
src/class30/B.java Normal file
View File

@@ -0,0 +1,5 @@
package class30;
public interface B {
void play();
}

30
src/class30/Test.java Normal file
View File

@@ -0,0 +1,30 @@
package class30;
public class Test {
public static void main(String[] args) {
C c = new C();
c.run();
c.go();
c.play();
}
}
//实现类实现多个接口,必须重写接口中所有的抽象方法
class C implements A, B {
@Override
public void run() {
}
@Override
public String go() {
return "";
}
@Override
public void play() {
}
}

View File

@@ -0,0 +1,6 @@
package class32;
public interface ClassDataInter {
void printAllStudentInfos();
void printAverageScore();
}

View File

@@ -0,0 +1,24 @@
package class32;
public class ClassDataInterImpl1 implements ClassDataInter {
private final Student[] students;
public ClassDataInterImpl1(Student[] students) {
this.students = students;
}
@Override
public void printAllStudentInfos() {
for (Student student : students) {
System.out.println(student.getName() + " " + student.getSex() + " " + student.getScore());
}
}
@Override
public void printAverageScore() {
double sum = 0;
for (Student student : students) {
sum += student.getScore();
}
System.out.println("平均分是:" + sum / students.length);
}
}

View File

@@ -0,0 +1,38 @@
package class32;
public class ClassDataInterImpl2 implements ClassDataInter {
private final Student[] students;
public ClassDataInterImpl2(Student[] students) {
this.students = students;
}
@Override
public void printAllStudentInfos() {
int maleCount = 0;
for (Student student : students) {
if (student.getSex() == '男') {
maleCount++;
}
}
System.out.println("男性人数是:" + maleCount);
System.out.println("女性人数是:" + (students.length - maleCount));
}
@Override
public void printAverageScore() {
double sum = 0;
double max = students[0].getScore();
double min = students[0].getScore();
for (Student student : students) {
sum += student.getScore();
if (max < student.getScore()) {
max = student.getScore();
}
if (min > student.getScore()) {
min = student.getScore();
}
}
System.out.println("平均分是:" + (sum - max - min) / (students.length - 2));
System.out.println("最高分是:" + max);
System.out.println("最低分是:" + min);
}
}

14
src/class32/Student.java Normal file
View File

@@ -0,0 +1,14 @@
package class32;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
private String name;
private char sex;
private double score;
}

26
src/class32/Test.java Normal file
View File

@@ -0,0 +1,26 @@
package class32;
public class Test {
public static void main(String[] args) {
//目标:完成接口的小案例
//1.定义学生类,创建学生对象,封装学生数据,才能交给别人处理
//2.准备学生数据,目前我们自己造一些数据
Student[] students = new Student[10];
students[0] = new Student("小王", '男', 90);
students[1] = new Student("小王", '男', 90);
students[2] = new Student("小王", '男', 90);
students[3] = new Student("小王", '男', 90);
students[4] = new Student("小王", '男', 90);
students[5] = new Student("小王", '男', 90);
students[6] = new Student("小王", '男', 90);
students[7] = new Student("小王", '男', 90);
students[8] = new Student("小王", '男', 90);
students[9] = new Student("小王", '男', 90);
ClassDataInter cdi = new ClassDataInterImpl1(students);
cdi.printAllStudentInfos();
cdi.printAverageScore();
ClassDataInter cdi2 = new ClassDataInterImpl2(students);
cdi2.printAllStudentInfos();
cdi2.printAverageScore();
}
}