参数传递例题、封装例题()、继承

这篇博客展示了Java编程中的封装和继承概念。通过一个试题管理系统为例,详细解释了如何实现试题录入、查询、删除、修改等功能,并利用排序和回答试题来演示封装和继承的应用。还探讨了对象的equals()和hashCode()方法的重写,以及子类对父类方法的重写。
摘要由CSDN通过智能技术生成

目录

参数传递例题

封装例题

封装例题--------业务(功能)类

 1-试题录入

2-试题查询

3-试题删除

4-试题修改

5-输出全部试题

6-排序试题(题号)

7-排序试题(分值)

8-回答试题

封装例题--------封装类

继承

继承代码体现



参数传递例题

package demo211130;

public class TestA {

    private String s = "abc";

    public static void main(String[] args) {
        TestB.set(new TestA().s + "1");//"abc1"
    }
}

public class TestB {

    private String owner;

    private TestB(String owner) {
        this.owner = owner;
    }

    public static void set(String string) {
        TestB b = new TestB(string + "2");// abc12
        System.out.println(b.owner + "4");//abc124
    }
}


package demo211130;

封装例题

封装例题--------业务(功能)类

主方法

import java.util.ArrayList;
import java.util.Scanner;
//(业务)功能类
public class QuestionTest {
	public static void main(String[] args) {
		QuestionTest qt = new QuestionTest();
		qt.start();
	}

	Scanner scan = new Scanner(System.in);

	public void start() {
		while (true) {// 业务逻辑
			System.out.println("--------------------------------");
			System.out.println("-------请选择业务------------------");
			System.out.println("-----1-试题录入(题号不能重复)---------");
			System.out.println("-----2-试题查询(按照题号查询)---------");
			System.out.println("-----3-试题删除(按照题号删除)---------");
			System.out.println("-----4-试题修改(按照题号修改)---------");
			System.out.println("-----5-查看试题(查看全部)------------");
			System.out.println("-----6-排序试题(按照题号排序)---------");
			System.out.println("-----7-排序试题(按照分数排序)---------");
			System.out.println("-----8-回答试题--------------------");
			System.out.println("-----请输入序号---------------------");
			switch (Integer.valueOf(scan.nextLine())) {
			case 1:
				inputs();
				break;
			case 2:
				getModelById();
				break;
			case 3:
				delModelById();
				break;
			case 4:
				updModelById();
				break;
			case 5:
				print();
				break;
			case 6:
				sortById();
				break;
			case 7:
				sortByValue();
				break;
			case 8:
				answerTitle();
				break;
			}
			System.out.println("****是否退出系统?y/n*****");
			if ("y".equalsIgnoreCase(scan.nextLine()))
				break;
		}
	}

 1-试题录入

    public void inputs() {
        while (true) {
            input();
            System.out.println("是否继续输入?y/n");
            if ("n".equalsIgnoreCase(scan.nextLine()))
                break;
        }
    }

    public boolean isExist(int id) {
        for (QuestionModel model : list) {
            if (model.getId() == id) {
                System.out.println("该题号已存在!");
                System.out.println("请重新输入题号:");
                return true;
            }
        }
        return false;
    }

    ArrayList<QuestionModel> list = new ArrayList<>();

    public void input() {
        QuestionModel model = new QuestionModel();
        int id = 0;
        do {
            System.out.println("请输入题号:");
            id = Integer.parseInt(scan.nextLine());
        } while (isExist(id));
        model.setId(id);
        System.out.println("请输入题目:");
        String title = scan.nextLine();
        model.setTltle(title);
        System.out.println("请输入选项A:");
        String optionA = scan.nextLine();
        model.setOptionA(optionA);
        System.out.println("请输入选项B:");
        String optionB = scan.nextLine();
        model.setOptionB(optionB);
        System.out.println("请输入选项C:");
        String optionC = scan.nextLine();
        model.setOptionC(optionC);
        System.out.println("请输入选项D:");
        String optionD = scan.nextLine();
        model.setOptionD(optionD);
        System.out.println("请输入答案:");
        String answer = scan.nextLine();
        model.setAnswer(answer);
        System.out.println("请输入分值:");
        int value = Integer.parseInt(scan.nextLine());
        model.setValue(value);
        list.add(model);
    }

2-试题查询

public void getModelById() {
		System.out.println("请输入要查询的题目的题号:");
		int id = Integer.parseInt(scan.nextLine());
		for (QuestionModel model : list) {
			if (model.getId() == id) {
				System.out.println("你要找的题目存在");
				System.out.println("题号:" + model.getId());
				System.out.println("题目:" + model.getTltle());
				System.out.println("选项A:" + model.getOptionA());
				System.out.println("选项B:" + model.getOptionB());
				System.out.println("选项C:" + model.getOptionC());
				System.out.println("选项D:" + model.getOptionD());
				System.out.println("答案:" + model.getAnswer());
				System.out.println("分值:" + model.getValue());
				return;
			}
		}
		System.out.println("你要找的题目不存在");
	}

3-试题删除

	public void delModelById() {
		System.out.println("请输入要删除的题目的题号:");
		int id = Integer.parseInt(scan.nextLine());

		for (int i = list.size() - 1; i >= 0; i--) {
			QuestionModel model = list.get(i);
			if (model.getId() == id) {
				list.remove(i);
				System.out.println("该题号(" + id + ")已删除!");
				return;
			}

		}
		System.out.println("你要删除的题目不存在");
	}

4-试题修改

	public void updModelById() {
		System.out.println("请输入要的题目的题号:");
		int id = Integer.parseInt(scan.nextLine());
		for (int i = 0; i < list.size(); i++) {
			QuestionModel model = list.get(i);
			if (model.getId() == id) {
				System.out.println("该题目信息如下");
				System.out.println("题号:" + model.getId());
				System.out.println("题目:" + model.getTltle());
				System.out.println("选项A:" + model.getOptionA());
				System.out.println("选项B:" + model.getOptionB());
				System.out.println("选项C:" + model.getOptionC());
				System.out.println("选项D:" + model.getOptionD());
				System.out.println("答案:" + model.getAnswer());
				System.out.println("分值:" + model.getValue());
				System.out.println("请进行修改");
				System.out.println("请输入题目:");
				String title = scan.nextLine();
				model.setTltle(title);
				System.out.println("请输入选项A:");
				String optionA = scan.nextLine();
				model.setOptionA(optionA);
				System.out.println("请输入选项B:");
				String optionB = scan.nextLine();
				model.setOptionB(optionB);
				System.out.println("请输入选项C:");
				String optionC = scan.nextLine();
				model.setOptionC(optionC);
				System.out.println("请输入选项D:");
				String optionD = scan.nextLine();
				model.setOptionD(optionD);
				System.out.println("请输入答案:");
				String answer = scan.nextLine();
				model.setAnswer(answer);
				System.out.println("请输入分值:");
				int value = Integer.parseInt(scan.nextLine());
				model.setValue(value);
				return;
			}
		}
		System.out.println("你要删除的题目不存在");
	}

5-输出全部试题

	public void print() {
		for (QuestionModel model : list) {
			System.out.println("题号:" + model.getId());
			System.out.println("题目:" + model.getTltle());
			System.out.println("选项A:" + model.getOptionA());
			System.out.println("选项B:" + model.getOptionB());
			System.out.println("选项C:" + model.getOptionC());
			System.out.println("选项D:" + model.getOptionD());
			System.out.println("答案:" + model.getAnswer());
			System.out.println("分值:" + model.getValue());
		}
	}

6-排序试题(题号)

public void sortById() {
		int len = list.size();
		for (int i = 0; i < len - 1; i++) {
			for (int j = 0; j < len - 1 - i; j++) {
				QuestionModel model1 = list.get(j);
				QuestionModel model2 = list.get(j + 1);
				if (model1.getId() > model2.getId()) {
					list.set(j, model2);
					list.set(j + 1, model1);
				}
			}
		}
	}

7-排序试题(分值)

public void sortByValue() {
		int len = list.size();
		for (int i = 0; i < len - 1; i++) {
			for (int j = 0; j < len - 1 - i; j++) {
				QuestionModel model1 = list.get(j);
				QuestionModel model2 = list.get(j + 1);
				if (model1.getValue() > model2.getValue()) {
					list.set(j, model2);
					list.set(j + 1, model1);
				}
			}
		}
	}

8-回答试题

public void answerTitle() {
		// 分数
		int score = 0;
		// 正确数
		int trueTitle = 0;
		for (QuestionModel model : list) {
			System.out.println("题号:" + model.getId());
			System.out.println("题目:" + model.getTltle());
			System.out.println("选项A:" + model.getOptionA());
			System.out.println("选项B:" + model.getOptionB());
			System.out.println("选项C:" + model.getOptionC());
			System.out.println("选项D:" + model.getOptionD());
			System.out.println("分值:" + model.getValue());
			System.out.print("请输入你的答案:");
			Scanner Scan = new Scanner(System.in);
			String inputAnswer = scan.nextLine();
			if (model.getAnswer().equalsIgnoreCase(inputAnswer)) {
				score += model.getValue();
				trueTitle++;
			}
		}
		System.out.println("得分为:" + score + "\t正确数为:" + trueTitle);
	}

package demo211130;

封装例题--------封装类

//实体类
//试题
public class QuestionModel {

	private int id;// 题号
	private String tltle;// 题目
	private String optionA;// 选项A
	private String optionB;// 选项B
	private String optionC;// 选项C
	private String optionD;// 选项D
	private String answer;// 答案
	private int value;// 分值
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getTltle() {
		return tltle;
	}
	public void setTltle(String tltle) {
		this.tltle = tltle;
	}
	public String getOptionA() {
		return optionA;
	}
	public void setOptionA(String optionA) {
		this.optionA = optionA;
	}
	public String getOptionB() {
		return optionB;
	}
	public void setOptionB(String optionB) {
		this.optionB = optionB;
	}
	public String getOptionC() {
		return optionC;
	}
	public void setOptionC(String optionC) {
		this.optionC = optionC;
	}
	public String getOptionD() {
		return optionD;
	}
	public void setOptionD(String optionD) {
		this.optionD = optionD;
	}
	public String getAnswer() {
		return answer;
	}
	public void setAnswer(String answer) {
		this.answer = answer;
	}
	public int getValue() {
		return value;
	}
	public void setValue(int value) {
		this.value = value;
	}
}


package demo211130;

继承

//继承
// 子类extends 父类
//派生类/下级类
//基类/超类/上级类

    // 继承本质:包含并且可以使用所继承的类中可访问的成员内容
    // 默认规则:直接继承 extends object
    // object=所有类的基类/超类

    // 继承的特点
    // 1-子类可以使用父类中的可访问的成员
    // 2-子类可以自定义成员
    // 3-子类可以重写父类方法
    // 4-类与类只能是单继承或间接继承
    // 5-继承中-类与类之间的包含关系    

public class TestC {
public static void main(String[] args) {
        TestC tc1 = new TestC();
        tc1.setId(100);
        System.out.println(tc1);
      //String str = tc1.toString();
        //System.out.println(str);
        System.out.println(tc1.toString());
        TestC tc2 = new TestC();
        tc2.setId(100);
        System.out.println(tc1.equals(tc2));// false
        int hash = tc1.hashCode();// 内存地址 HashMap HahSet

        // tc1.clone();//深拷贝、浅拷贝
        // tc1.getclass()//类的描述//反射

        // tc1.notify();//多线程
        // tc1.notifyAll();
        // tc1.wait();

        // tc1.finalize();//不推荐
        // 促进GC-垃圾自动回收回收机制
    }

    @Override
    public boolean equals(Object obj) {
        TestC tc = (TestC) obj;// 向下转型
        return this.id == tc.id;// this关键字用法
    }

    private int id;

    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return super.toString();
    }

    // 重写方法的调用:
    // 若对象所调用的方法已重写,则调用的是子类重写的方法,否则调用的是父类中的方法

    // 重载 overloa:同一个文件当中,方法名相同,参数不同
    // 重写 overla(覆盖):子类中存在父类中(两个文件),方法定义结构相同同的方法(暂时简单理解)

    // 注解annotation
    @Override // 重写的方法
    public String toString() {
        return "TestC [id=" + id + "]";
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}


继承代码体现

package demo211130;

public class TestD {

}

class Automoblie1 {
    int length;
    int width;
    int height;
    String trademark;
    String licenceplate;
}

class Bus1 extends Automoblie1 {
//    int length;
//    int width;
//    int height;
//    String trademark;
//    String licenceplate;
}

class Car1 extends Automoblie1 {
//    int length;
//    int width;
//    int height;
//    String trademark;
//    String licenceplate;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值