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());
}
}