01 13Java中级之综合案例:继承分析

1 案例分析一(学生类)

建立一个人类(Person)和学生类(Student),功能要求如下:
(1)Person中包含4个私有型的数据成员name、addr、sex、age,分别为字符串型,字符串型、字符型及整型,表示姓名、地址、性别、年龄。一个4参构造方法、一个两参构造方法、一个无参构造方法、一个输出方法显示4种属性。
(2)Student类继承Person类,并增加成员math、english存放数学和英语成绩。一个六参构造方法、一个两参构造方法一个无参构造方法和重写输出方法用于显示6种属性。

class Person{
	private String name;
	private String addr;
	private char sex;
	private int age;

	public Person(){}

	public Person(String name, String addr){
		this(name, addr, '男', 0);
	}

	public Person(String name, String addr, char sex, int age){
		this.name = name;
		this.addr = addr;
		this.sex = sex;
		this.age = age;
	}

	public String getInfo(){
		return "Name: " + this.name + "; Address: " + this.addr + "; Sex: " + this.sex + "; Age: " + this.age;
	}

	//setter, getter略
}
class Student extends Person{
	private double math;
	private double english;

	public Student(){}

	public Student(String name, String addr){
		this(name, addr, '男', 0, 0.0, 0.0);
	}

	public Student(String name, String addr, char sex, int age, double math, double english){
		super(name, addr, sex, age);
		this.math = math;
		this.english = english;
	}

	public String getInfo(){
		return super.getInfo() + "; Math: " + this.math + "; English: " + this.english;
	}
}

public class JavaDemo{

	public static void main(String[] args){
		
	}
}

2 案例分析二(管理人员与职员类)

定义员工类,具有姓名、年龄、性别属性,并具有构造方法和显示数据方法。定义管理层类,继承员工类,并有自己的属性职务和年薪。定义职员类,继承员工类,并有自己的属性所属部门和月薪。

class Worker{
	private String name;
	private int age;
	private char sex;

	public Worker(){}

	public Worker(String name, int age, char sex){
		this.name = name;
		this.age = age;
		this.sex = sex;
	}

	public String getInfo(){
		return "Name: " + this.name + "; Age: " + this.age + "; Sex: " + this.sex;
	}

	//setter and getter abridge
}

class manager extends Worker{
	private String job;
	private double annualsalary;

	public manager(){}

	public manager(String name, int age, char sex, String job, double annualsalary){
		super(name, age, sex);
		this.job = job;
		this.annualsalary = annualsalary;
	}

	public String getInfo(){
		return super.getInfo() + "; Job: " + this.job + "; Annual Salary: " + this.annualsalary;
	}
}

class Employee extends Worker{
	private String dept;
	private double monthsalary;

	public Employee(){}

	public Employee(String name, int age, char sex, String dept, double monthsalary){
		super(name, age, sex);
		this.dept = dept;
		this.monthsalary = monthsalary;
	}

	public String getInfo(){
		return super.getInfo() + "; Department: " + this.dept + "; Month Salary: " + this.monthsalary;
	}
}
public class JavaDemo{

	public static void main(String[] args){
		
	}
}

3 案例分析三(字符串统计)

编写程序,统计出字符串”want you to know one thing“中的字母n和字母o的出现次数。

public class JavaDemo{

	public static int[] count(String str, char ... chars){
		int count[] = new int[chars.length];
		for(int i = 0; i < str.length(); i++){
			for(int j = 0; j < chars.length; j++){
				if(chars[j] == str.charAt(i)){
					count[j]++;
				}
			}
		}

		return count;
	}

	public static void main(String[] args){
		int [] c = count("want you to know one thing", 'n', 'o', 'a');
		for(int temp : c){
			System.out.println(temp);
		}
	}
}

4 案例分析四(数组操作)

建立一个可以实现整型数组的操作类(Array),而后在里面可以操作的数组的大小由外部来决定,而后在Array类里面需要提供有数组的如下处理:进行数据的增加(如果数据满了则无法增加)、可以实现数组的容量扩充、取得数组全部内容。完成之后在此基础上在派生出两个子类:
|——数组排序类:返回的数据必须是排序后的结果;
|——数组反转类:可以实现内容的首尾交换。

class Array{
	protected int [] arr;
	private int size;
	private int longer;

	public Array(){}

	public Array(int size){
		this.arr = new int[this.size = size];
		this.longer = 0;
	}

	public void addEle(int ele){
		if( longer < size ){
			this.arr[longer++] = ele;
		}
	}

	public void expand(int size){
		int[] temp = new int[this.size += size];
		for(int i =0; i < this.longer; i++){
			temp[i] = this.arr[i];
		}
		this.arr = temp;
	}

	public String getInfo(){
		String str = "";
		for(int i = 0; i < longer; i++){
			str += "arr[" + i + "] = " + this.arr[i] + ";"; 
		}

		return str;
	}

}

class ArraySort extends Array{

	public ArraySort(){}

	public ArraySort(int size){
		super(size); 
	}
	public void sort(){
		java.util.Arrays.sort(super.arr);
	}

	public String getInfo(){
		this.sort();
		return super.getInfo();
	}
}

class ArrayReverse extends Array{

}

public class JavaDemo{

	public static void main(String[] args){
		Array arr = new Array(2);
		arr.addEle(1);
		arr.addEle(2);
		System.out.println(arr.getInfo());
		arr.expand(2);
		arr.addEle(3);
		arr.addEle(4);
		System.out.println(arr.getInfo());

		ArraySort arrA = new ArraySort(3);
		arrA.addEle(4);
		arrA.addEle(2);
		arrA.addEle(3);
		System.out.println(arrA.getInfo());
	}
}
发布了77 篇原创文章 · 获赞 11 · 访问量 2660

猜你喜欢

转载自blog.csdn.net/weixin_43762330/article/details/104504722