一、多态
认识多态
使用多态的好处
多态下的类型转换问题
二、final
1、认识final
2、补充知识:常量详解
三、抽象类
认识抽象类
使用抽象类的好处
抽象类的常见应用场景:模板方法设计模式
四、接口
接口概述
接口的综合案例
代码
import java.util.ArrayList;
public class StudentMannager {
private ArrayList<Student> students = new ArrayList<>();
private StudentOperator method1 = new Method1();
private StudentOperator method2 = new Method2();
public StudentMannager() {
students.add(new Student("小1" , 99 , '女'));
students.add(new Student("小2" , 100 , '女'));
students.add(new Student("小3" , 90 , '女'));
students.add(new Student("小4" , 95 , '男'));
students.add(new Student("小5" , 99 , '男'));
}
public StudentMannager(ArrayList<Student> students) {
this.students = students;
}
// 打印全班学生的信息
public void printInfo(){
method1.printAllInfo(students);
}
// 打印全班学生的平均成绩
public void printScore(){
method1.printAverageScore(students);
}
}
import java.util.ArrayList;
public interface StudentOperator {
void printAllInfo(ArrayList<Student> students);
void printAverageScore(ArrayList<Student> students);
}
import java.util.ArrayList;
public class Method1 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 sum = 0.0;
System.out.println("==================全班学生平均分如下======================");
for(int i = 0 ; i < students.size() ; i++){
Student s= students.get(i);
sum += s.getScore();
}
System.out.println("全班学生平均分:" + sum / students.size());
}
}
import java.util.ArrayList;
public class Method2 implements StudentOperator{
// 打印全班学生信息,包含男女生人数
@Override
public void printAllInfo(ArrayList<Student> students) {
int count1 = 0;
int count2 = 0;
System.out.println("==================全班学生信息如下======================");
for(int i = 0 ; i < students.size() ; i++){
Student s= students.get(i);
if(s.getSex() == '男'){
count1++;
}else{
count2++;
}
System.out.println("姓名:" + s.getName()
+ " 性别:" + s.getSex()
+ " 成绩:" + s.getScore());
}
System.out.println("男生人数:" + count1 + "女生人数:" + count2);
System.out.println("==================全班学生信息如下======================");
}
//打印全班学生的平均分,去掉最高分和最低分
@Override
public void printAverageScore(ArrayList<Student> students) {
double sum = 0.0;
double max = students.get(0).getScore();
double min = students.get(0).getScore();
System.out.println("==================全班学生平均分如下======================");
for(int i = 0 ; i < students.size() ; i++){
Student s= students.get(i);
sum += s.getScore();
if(max < s.getScore()){
max = s.getScore();
}
if(min > s.getScore()){
min = s.getScore();
}
}
System.out.println("全班学生平均分:" + (sum - max - min) / (students.size() - 2));
}
}
import java.util.Random;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
StudentMannager studentMannager = new StudentMannager();
studentMannager.printInfo();
studentMannager.printScore();
}
}
==================全班学生信息如下======================
姓名:小1 性别:女 成绩:99.0
姓名:小2 性别:女 成绩:100.0
姓名:小3 性别:女 成绩:90.0
姓名:小4 性别:男 成绩:95.0
姓名:小5 性别:男 成绩:99.0
==================全班学生信息如下======================
==================全班学生平均分如下======================
全班学生平均分:96.6