面向抽象编程实现:

// 学生接口
public interface Student {
    String getID(); // 获取学号
    String getName(); // 获取名字
}

// 本科生类
public class Undergraduate implements Student {
    private String id;
    private String name;
    
    public Undergraduate(String id, String name) {
        this.id = id;
        this.name = name;
    }
    
    @Override
    public String getID() {
        return id;
    }
    
    @Override
    public String getName() {
        return name;
    }
}

// 硕士生类
public class MasterDegreeCandidate implements Student {
    private String id;
    private String name;
    
    public MasterDegreeCandidate(String id, String name) {
        this.id = id;
        this.name = name;
    }
    
    @Override
    public String getID() {
        return id;
    }
    
    @Override
    public String getName() {
        return name;
    }
}

// 博士生类
public class DoctoralCandidate implements Student {
    private String id;
    private String name;
    
    public DoctoralCandidate(String id, String name) {
        this.id = id;
        this.name = name;
    }
    
    @Override
    public String getID() {
        return id;
    }
    
    @Override
    public String getName() {
        return name;
    }
}

// 学生信息读取器
public class StuInfoReader {
    public void display(Student student) {
        System.out.println("学号:" + student.getID() + ",姓名:" + student.getName());
    }
}

// 大学类
public class University {
    public static void main(String[] args) {
        Student student1 = new Undergraduate("001", "小明");
        Student student2 = new MasterDegreeCandidate("002", "小红");
        Student student3 = new DoctoralCandidate("003", "小刚");
        
        StuInfoReader reader = new StuInfoReader();
        reader.display(student1);
        reader.display(student2);
        reader.display(student3);
    }
}

面向接口编程实现:

// 学生接口
public interface Student {
    String getID(); // 获取学号
    String getName(); // 获取名字
}

// 本科生类
public class Undergraduate implements Student {
    private String id;
    private String name;
    
    public Undergraduate(String id, String name) {
        this.id = id;
        this.name = name;
    }
    
    @Override
    public String getID() {
        return id;
    }
    
    @Override
    public String getName() {
        return name;
    }
}

// 硕士生类
public class MasterDegreeCandidate implements Student {
    private String id;
    private String name;
    
    public MasterDegreeCandidate(String id, String name) {
        this.id = id;
        this.name = name;
    }
    
    @Override
    public String getID() {
        return id;
    }
    
    @Override
    public String getName() {
        return name;
    }
}

// 博士生类
public class DoctoralCandidate implements Student {
    private String id;
    private String name;
    
    public DoctoralCandidate(String id, String name) {
        this.id = id;
        this.name = name;
    }
    
    @Override
    public String getID() {
        return id;
    }
    
    @Override
    public String getName() {
        return name;
    }
}

// 学生信息读取器接口
public interface StuInfoReader {
    void display(Student student);
}

// 学生信息读取器实现类
public class StuInfoReaderImpl implements StuInfoReader {
    @Override
    public void display(Student student) {
        System.out.println("学号:" + student.getID() + ",姓名:" + student.getName());
    }
}

// 大学类
public class University {
    public static void main(String[] args) {
        Student student1 = new Undergraduate("001", "小明");
        Student student2 = new MasterDegreeCandidate("002", "小红");
        Student student3 = new DoctoralCandidate("003", "小刚");
        
        StuInfoReader reader = new StuInfoReaderImpl();
        reader.display(student1);
        reader.display(student2);
        reader.display(student3);
    }
}
``
设计一个学生信息读取器希望所设计的读取器可以展示学生的学号和名字分别采用面向抽象编程和面向接口的编程实现。其中:除了主类外还有学生类Student和三类学生即本科生Undergraduate、硕士生Master Degree Candidate和博士生Doctoral Candidate以及的学生信息读取器StuInfoReader和大学University。其中:大学负责学生相关信息的设定。

原文地址: https://www.cveoy.top/t/topic/dJeU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录