面向对象补充

一。1 访问控制符

1.2 类到对象的过程

二。万类之祖-Object类

所有类的祖先

2.1 finalize()

对象即将销毁的时候,JVM自动调用的方法。

@Override
protected void finalize() throws Throwable {
System.out.println("我要被销毁了,悄悄的走了.....");
}

2.2 equals/hashcode

找对象:

1. hashcode: 门牌号

2. equals: 比较(真实对象)

三。抽象类

3.1 类定义

public abstract class XXX

3.2 抽象类不能创建对象

AbstractHuman h = new Chinese();

四。接口

完全抽象类型,

JDK1.7: 所有方法都没有实现

public abstract JDK1.8:

五。简易学生信息管理系统

StudentInformationManagmentSystem SIMS

5.1 学生类

private String id;//学号
private String name;
private String gender;
private String subject;//科目
private double score;

5.2 学生信息接口

规范功能

package sims;

public interface IStudentService {
    /**
     * 添加学生对象
     * @param student
     */
    void addStudent(Student student);

    /**
     * 找出某科科目最高的学生
     * @param
     * @return
     */
    Student findMaxSubject(String subject);

    Student findMinSubject(String subject);

    double subjectAvg(String subject);

    double subjectSum(String subject);

    /**
     * 某门课的通过率
     * @param suject
     * @return
     */
    double subjectPassPencent(String suject);

    /**
     * 没有通过的学生人数
     * @return
     */
    int countFail();

    void deleteStudent(String id);

    int countGenger(String gender);


}

5.3 接口实现

package sims;

import java.util.Arrays;

public class StudentServiceImpl implements IStudentService {
    private Student[] students=new Student[5];
    private int index;//数组位置
    @Override
    public void addStudent(Student student) {
        students[index++]=student;
    }


    @Override
    public Student findMaxSubject(String subject) {
        double max = 0;
        int pos = 0;
        for (int i=0;i<index;i++){
            Student s=students[i];
            if (subject.equals(s.getSubject())){
                if (s.getScore() > max) {
                    max = s.getScore();
                    pos = i;
                }
            }

        }
        return students[pos];
    }

    @Override
    public Student findMinSubject(String subject) {
        double min=0;
        int pos=0;
        for(int i=0;i<index;i++){
            Student s=students[i];
            if(subject.equals(s.getSubject())){
                if(s.getScore()<min){
                    min=s.getScore();
                    pos=i;
                }
            }
        }

        return students[pos];
    }

    @Override
    public double subjectAvg(String subject) {
        double sum=0;
        int count=0;
        for(int i=0;i<index;i++){
            Student s=students[i];
            if(subject.equals(s.getSubject())){
                sum+=s.getScore();
                count++;
            }
        }
        return sum/count;
    }

    @Override
    public double subjectSum(String subject) {
        double sum=0;
        for(int i=0;i<index;i++){
            Student s=students[i];
            if(subject.equals(s.getSubject())){
                sum+=s.getScore();
            }
        }
        return sum;
    }

    @Override
    public double subjectPassPencent(String suject) {
        int passCount=0;
        int totalCount=0;
        for(int i=0;i<index;i++){
            Student s=students[i];
            if(suject.equals((s.getSubject()))){
                totalCount++;
                if(s.getScore()>=60){
                    passCount++;
                }
            }
        }
        return (passCount/totalCount)*1.0;
    }

    @Override
    public int countFail() {
        int failCount=0;
        for(int i=0;i<index;i++){
            Student s=students[i];
            if(s.getScore()<60){
                failCount++;
            }
        }
        return failCount;
    }

    @Override
    public void deleteStudent(String id) {
        int foundIndex=-1;
        for(int i=0;i<index;i++){
            if (students[i].getId().equals(id)) {
                    foundIndex=i;
                    break;
            }
        }
        if(foundIndex!=-1){
            students= Arrays.copyOfRange(students,0,foundIndex);
            students=Arrays.copyOfRange(students,foundIndex+1,index-1);
            index--;
        }
    }


    @Override
    public int countGenger(String gender) {
        int count=0;
        for(int i=0;i<index;i++){
            if(students[i].getGender().equals(gender)){
                count++;
            }
        }
        return count;
    }
}

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值