Java编程实验,有没有人解答

定义一个motherboard抽象类,包含内存硬盘两个抽象方法,用两个类继承抽象类,使用computer类显示主板内存硬盘大小,最后一个测试类(main)

你题目继承关系说的不太清楚 ,你看我写的这个需要改什么吧。
这里用了sigar.jar包 下载地址https://sourceforge.net/projects/sigar/
1.motherboard类

import org.hyperic.sigar.SigarException;

public abstract class MotherBoard {
    public abstract void memory() throws SigarException;//获取内存信息
    public abstract void file() throws SigarException;//获取硬盘信息
    
}


2.computer类

import org.hyperic.sigar.FileSystem;
import org.hyperic.sigar.FileSystemUsage;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.Swap;

public class Computer  extends MotherBoard{

    @Override
    public void memory() throws SigarException {

        Sigar sigar = new Sigar();

        Mem mem = sigar.getMem();

        // 内存总量

        System.out.println("内存总量:    " + mem.getTotal() / 1024L + "K av");

        // 当前内存使用量

        System.out.println("当前内存使用量:    " + mem.getUsed() / 1024L + "K used");

        // 当前内存剩余量

        System.out.println("当前内存剩余量:    " + mem.getFree() / 1024L + "K free");

        Swap swap = sigar.getSwap();

        // 交换区总量

        System.out.println("交换区总量:    " + swap.getTotal() / 1024L + "K av");

        // 当前交换区使用量

        System.out.println("当前交换区使用量:    " + swap.getUsed() / 1024L + "K used");

        // 当前交换区剩余量

        System.out.println("当前交换区剩余量:    " + swap.getFree() / 1024L + "K free");
        
    }

    @Override
    public void file() throws SigarException {
         Sigar sigar = new Sigar();

            FileSystem fslist[] = sigar.getFileSystemList();

            for (int i = 0; i < fslist.length; i++)

            {

                System.out.println("分区的盘符名称" + i);

                FileSystem fs = fslist[i];

                // 分区的盘符名称

                System.out.println("盘符名称:    " + fs.getDevName());

                // 分区的盘符名称

                System.out.println("盘符路径:    " + fs.getDirName());

                System.out.println("盘符标志:    " + fs.getFlags());//

                // 文件系统类型,比如 FAT32、NTFS

                System.out.println("盘符类型:    " + fs.getSysTypeName());

                // 文件系统类型名,比如本地硬盘、光驱、网络文件系统等

                System.out.println("盘符类型名:    " + fs.getTypeName());

                // 文件系统类型

                System.out.println("盘符文件系统类型:    " + fs.getType());

                FileSystemUsage usage = null;

                usage = sigar.getFileSystemUsage(fs.getDirName());

                switch (fs.getType())

                {

                    case 0: // TYPE_UNKNOWN :未知

                        break;

                    case 1: // TYPE_NONE

                        break;

                    case 2: // TYPE_LOCAL_DISK : 本地硬盘

                        // 文件系统总大小

                        System.out.println(fs.getDevName() + "总大小:    "

                                + usage.getTotal() + "KB");

                        // 文件系统剩余大小

                        System.out.println(fs.getDevName() + "剩余大小:    "

                                + usage.getFree() + "KB");

                        // 文件系统可用大小

                        System.out.println(fs.getDevName() + "可用大小:    "

                                + usage.getAvail() + "KB");

                        // 文件系统已经使用量

                        System.out.println(fs.getDevName() + "已经使用量:    "

                                + usage.getUsed() + "KB");

                        double usePercent = usage.getUsePercent() * 100D;

                        // 文件系统资源的利用率

                        System.out.println(fs.getDevName() + "资源的利用率:    "

                                + usePercent + "%");

                        break;

                    case 3:// TYPE_NETWORK :网络

                        break;

                    case 4:// TYPE_RAM_DISK :闪存

                        break;

                    case 5:// TYPE_CDROM :光驱

                        break;

                    case 6:// TYPE_SWAP :页面交换

                        break;

                }

                System.out.println(fs.getDevName() + "读出:    "

                        + usage.getDiskReads());

                System.out.println(fs.getDevName() + "写入:    "

                        + usage.getDiskWrites());

            }

            return;
        
    }

}


3.Main测试类

import org.hyperic.sigar.SigarException;

public abstract class Main extends MotherBoard{
    
    public static void main(String[] args) throws SigarException {
        Computer computer = new Computer();
        //打印硬盘信息
        computer.file();
        //打印内存信息
        computer.memory();
        
    }
}


运行截图

img