涉及继承、接口、重写、重载等多个知识点的程序练习

创建People类,属性包括:姓名,年龄,性别,行为包括:get/set方法,eat()方法,构造方法,toString()方法

public class People {
	private String name;
	private int age;
	private char sex;
	public People() {
		
	}
	public People(String name, int age, char sex) {
		super();
		this.name = name;
		this.age = age;
		this.sex = sex;
		
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public char getSex() {
		return sex;
	}
	public void setSex(char sex) {
		this.sex = sex;
	}
	
	@Override
	public String toString() {
		return "People [name=" + name + ", age=" + age + ", sex=" + sex + "]";
	}
	public void eat() {
		System.out.println("十二点了,该吃午饭了");
	}
	
}

在创建Student类,增加属性学号,重写eat()方法、toString()方法;student中特有的study()方法,并重载,

public class Student extends People {
	private int studentNo;
	private static int studentsnum=0;
	public Student(String name, int age, char sex,int studentNo) {
		super(name, age, sex);
		this.studentNo =studentNo;
		studentsnum++;
		System.out.println("现在的学生总数为:"+studentsnum);
	}
	public int getStudentNo() {
		return studentNo;
	}

	public void setStudentNo(int studentNo) {
		this.studentNo = studentNo;
	}

	
	public void eat() {
	System.out.println("还有5分钟就下课了,下课后去食堂吃黄焖鸡米饭。");
	}
	public void study(int time) {
		
		System.out.println("回家了,自己写作业");
	}
	public void study(int time,String site) {
		System.out.println("在学校和小明一起写作业");
	}
	@Override
	public String toString() {

		return "Student [studentNo=" + studentNo + ", name=" + getName() + ", age=" + getAge() + ", sex=" + getSex() + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + studentNo;
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if (studentNo != other.studentNo)
			return false;
		return true;
	}
	
}

测试类:Student st1=(Student)obj[2];第一个Student是声明变量类型,就像int a=10中的int一样,括号里的Student则是将Object对象强转成Student类型的对象

public class Test {
	public static void main(String[] args) {
		HashSet<Student> lists =new HashSet<Student>();
		Student stu1=new Student("陈晨", 24, '男', 1);
		Student stu2=new Student("阮秀", 22, '女', 2);
		Student stu3=new Student("陈阔", 24, '男', 1);
		Student stu4=new Student("宋琳", 21, '女', 4);
		Student stu5=new Student("张峰", 24, '男', 5);
		lists.add(stu1);
		lists.add(stu2);
		lists.add(stu3);
		lists.add(stu4);
		lists.add(stu5);
		System.out.println(lists.size());
		for(Object show:lists) {         
			System.out.println(show);
		}
		Object[] objs= lists.toArray();
		
		 Student st1=(Student)objs[2];
	    st1.eat();
		People p1=new People();
		p1.eat();
		st1.study(12);
		st1.study(12,"学校");
		
	}
}

利用HashSet的去重原理,在Student中重写了hashcode()及equals()方法,规定当学号相同时则认为是同一个对象,因此虽然声明了Student类型有5个,并添加到lists中,但通过HashSet查看lists的大小时,结果是4.运行结果图如下:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值