做教育网站,开源网站开发文档下载,wordpress 主页链接,怎么创网站这次的练习主要是一些类的高阶操作#xff0c;像继承、接口和内部类这些#xff0c;但其实还是挺简单的 目录
7-1 jmu-Java-03面向对象基础-04-形状-继承
前言
本题描述
思考
输入样例:
输出样例: 7-3 jmu-Java-04面向对象进阶-03-接口-自定义接口ArrayIntegerStack
m…这次的练习主要是一些类的高阶操作像继承、接口和内部类这些但其实还是挺简单的 目录
7-1 jmu-Java-03面向对象基础-04-形状-继承
前言
本题描述
思考
输入样例:
输出样例: 7-3 jmu-Java-04面向对象进阶-03-接口-自定义接口ArrayIntegerStack
main方法说明
思考
输入样例
输出样例 7-3 教师类
输入格式:
输出格式:
输入样例:
输出样例: 7-4 教师类-2
输入格式:
输出格式:
输入样例:
输出样例: 7-5 编写一个类Shop商店、内部类InnerCoupons内部购物券
输入格式:
输出格式:
输入样例:
输出样例:
7-6 jmu-Java-04面向对象进阶-01-接口-Comparable
1.编写PersonSortable类
2.main方法中
输入样例:
输出样例: 7-7 jmu-Java-03面向对象-06-继承覆盖综合练习-Person、Student、Employee、Company
main方法说明
输入样例
输出样例 7-8 定义接口Biology、Animal、类Person、子类Pupil
输入格式:
输出格式:
输入样例:
输出样例:
7-9 Employee类的层级结构
输入格式:
输出格式:
输入样例:
输出样例: 7-1 jmu-Java-03面向对象基础-04-形状-继承
前言
前面题目形状中我们看到为了输出所有形状的周长与面积需要建立多个数组进行多次循环。这次试验使用继承与多态来改进我们的设计。
本题描述
1.定义抽象类Shape属性不可变静态常量double PI值为3.14抽象方法:public double getPerimeter(),public double getArea()
2.Rectangle与Circle类均继承自Shape类。 Rectangle类(属性int width,length)、Circle类(属性int radius)。 带参构造方法为Rectangle(int width,int length),Circle(int radius)。toString方法(Eclipse自动生成)
3.编写double sumAllArea方法计算并返回传入的形状数组中所有对象的面积和与double sumAllPerimeter方法计算并返回传入的形状数组中所有对象的周长和。
4.main方法 4.1 输入整型值n然后建立n个不同的形状。如果输入rect则依次输入宽、长。如果输入cir则输入半径。 4.2 然后输出所有的形状的周长之和面积之和。并将所有的形状信息以样例的格式输出。 提示使用Arrays.toString。 4.3 最后输出每个形状的类型与父类型.使用类似shape.getClass() //获得类型, shape.getClass().getSuperclass() //获得父类型;
注意处理输入的时候使用混合使用nextInt与nextLine需注意行尾回车换行问题。
思考
你觉得sumAllArea和sumAllPerimeter方法放在哪个类中更合适是否应该声明为static?
输入样例:
4
rect
3 1
rect
1 5
cir
1
cir
2
输出样例:
38.84
23.700000000000003
[Rectangle [width3, length1], Rectangle [width1, length5], Circle [radius1], Circle [radius2]]
class Rectangle,class Shape
class Rectangle,class Shape
class Circle,class Shape
class Circle,class Shapeimport java.math.*;
import java.util.*;abstract class Shape{final double PI 3.14;public abstract double getPerimeter();public abstract double getArea();
}class Rectangle extends Shape{private int length 0;private int width 0;public Rectangle(int _length,int _width){this.length _length;this.width _width;}public double getArea(){return this.width * this.length;}public double getPerimeter(){return (this.width this.length)*2;}public String toString(){return Rectangle [width this.length , length this.width ];}
}class Circle extends Shape{private int radius 0;public Circle(int _radius){this.radius _radius;}public double getPerimeter(){return this.radius * PI * 2;}public double getArea(){return this.radius * PI * this.radius;}public String toString(){return Circle [radius this.radius ];}
}public class Main {static Scanner in new Scanner(System.in);public static void main(String[] args) {int n in.nextInt();ArrayListShape shape new ArrayListShape();double sumArea 0;double sumPerimeter 0;for(int i0;in;i){String op in.next();if(op.equals(rect)){int width in.nextInt();int length in.nextInt();shape.add(new Rectangle(width,length));}if(op.equals(cir)){int radius in.nextInt();shape.add(new Circle(radius));}} for(int i0;in;i){sumArea shape.get(i).getArea();sumPerimeter shape.get(i).getPerimeter(); }System.out.println(sumPerimeter);System.out.println(sumArea);System.out.println(shape.toString());for(int i0;in;i){System.out.println(shape.get(i).getClass() , shape.get(i).getClass().getSuperclass());}}
}7-3 jmu-Java-04面向对象进阶-03-接口-自定义接口ArrayIntegerStack
定义IntegerStack接口用于声明一个存放Integer元素的栈的常见方法: public Integer push(Integer item); //如果item为null则不入栈直接返回null。如果栈满也返回null。如果插入成功返回item。 public Integer pop(); //出栈如果为空则返回null。出栈时只移动栈顶指针相应位置不置为null public Integer peek(); //获得栈顶元素如果为空则返回null. public boolean empty(); //如果为空返回true public int size(); //返回栈中元素个数
定义IntegerStack的实现类ArrayIntegerStack内部使用数组实现。创建时可指定内部数组大小。
main方法说明
输入n建立可包含n个元素的ArrayIntegerStack对象输入m个值均入栈。每次入栈均打印入栈返回结果。输出栈顶元素输出是否为空输出size使用Arrays.toString()输出内部数组中的值。输入x然后出栈x次每次出栈均打印。输出栈顶元素输出是否为空输出size使用Arrays.toString()输出内部数组中的值。
思考
如果IntegerStack接口的实现类内部使用ArrayList来存储元素怎么实现测试代码需要进行什么修改
输入样例
5
3
1 2 3
2
输出样例
1
2
3
3,false,3
[1, 2, 3, null, null]
3
2
1,false,1
[1, 2, 3, null, null]import java.math.*;
import java.util.*;interface IntegerStack{public Integer push(Integer item);public Integer pop(); public Integer peek(); public boolean empty();public int size();
}class ArrayIntegerStack implements IntegerStack{Integer[] array;int len 0;int length 0;public ArrayIntegerStack(int _len){this.array new Integer[_len];this.length _len;}public Integer push(Integer item){if(this.array null){return null;}if(this.len this.length){return null;}array[this.len] item;this.len;return item;}public Integer pop(){if(this.len 0){return null;}this.len--;return this.array[this.len];} public Integer peek(){if(this.len 0){return null;}return this.array[this.len-1];} public boolean empty(){if(this.len 0){return true;}return false;} public int size(){return this.len;}public String toString(){String res [;for(int i0;ilength - 1;i){res this.array[i];res , ;}res this.array[this.length - 1];res ];return res;}
}public class Main {static Scanner in new Scanner(System.in);public static void main(String[] args) { int n in.nextInt();ArrayIntegerStack ais new ArrayIntegerStack(n);int m in.nextInt();for(int i0;im;i){int tmp in.nextInt();System.out.println(ais.push(tmp));}System.out.println(ais.peek() , ais.empty() , ais.size()); System.out.println(ais.toString());int x in.nextInt();for(int i0;ix;i){System.out.println(ais.pop());}System.out.println(ais.peek() , ais.empty() , ais.size()); System.out.println(ais.toString());}
} 7-3 教师类 设计一个教师类Teacher,要求 属性有编号int no、姓名String name、年龄int age、所属学院String seminary为这些属性设置相应的get和set方法。 为Teacher类重写equals方法要求当两个教师对象的no相同时返回true。 重写Teacher类的toString方法通过该方法可以返回“no: , name:, age: **, seminary: **”形式的字符串。
输入格式:
两个教师对象的编号姓名年龄学院
输出格式:
教师的信息 两个教师是否相等
输入样例:
在这里给出一组输入。例如
1 Linda 38 SoftwareEngineering
2 Mindy 27 ComputerScience输出样例:
在这里给出相应的输出。例如
no: 1, name:Linda, age: 38, seminary: SoftwareEngineering
no: 2, name:Mindy, age: 27, seminary: ComputerScience
false import java.math.*;
import java.util.*;class Teacher{private int no;private String name;private int age;private String seminary;public Teacher(int _no,String _name,int _age,String _seminary){this.age _age;this.name _name;this.no _no;this.seminary _seminary;}public boolean equals(Teacher a){return this.age a.age this.no a.no this.seminary.equals(a.seminary) this.name.equals(a.name);} public String toString(){return no: this.no , name: this.name , age: this.age , seminary: this.seminary;}
}public class Main {static Scanner in new Scanner(System.in);public static void main(String[] args) {int no in.nextInt();String name in.next();int age in.nextInt();String seminary in.next();Teacher t1 new Teacher(no,name,age,seminary);no in.nextInt();name in.next();age in.nextInt();seminary in.next();Teacher t2 new Teacher(no,name,age,seminary);System.out.println(t1.toString());System.out.println(t2);System.out.println(t1.equals(t2));}
}7-4 教师类-2
修改题目143
修改教师类使得由多个Teacher对象所形成的数组可以排序编号由低到高排序并在main函数中使用Arrays.sort(Object[] a)方法排序定义一个类TeacherManagement包含教师数组提供方法add(Teacher[])使其可以添加教师提供重载方法search方法可以在一组给定的教师中根据姓名或年龄返回等于指定姓名或年龄的教师的字符串信息信息格式为“no: , name:, age: **, seminary: **”。如果没有满足条件的教师则返回“no such teacher”。
输入格式:
教师个数 教师信息 待查找教师的姓名 待查找教师的年龄
输出格式:
排序后的信息 按姓名查找的老师信息 按年龄查找的老师信息
输入样例:
在这里给出一组输入。例如
4
3 Linda 38 SoftwareEngineering
1 Mindy 27 ComputerScience
4 Cindy 28 SoftwareEngineering
2 Melody 27 ComputerScience
Cindy
27输出样例:
在这里给出相应的输出。例如
no: 1, name: Mindy, age: 27, seminary: ComputerScience
no: 2, name: Melody, age: 27, seminary: ComputerScience
no: 3, name: Linda, age: 38, seminary: SoftwareEngineering
no: 4, name: Cindy, age: 28, seminary: SoftwareEngineering
search by name:
no: 4, name: Cindy, age: 28, seminary: SoftwareEngineering
search by age:
no: 1, name: Mindy, age: 27, seminary: ComputerScience
no: 2, name: Melody, age: 27, seminary: ComputerScience
import java.math.*;
import java.util.*;class Teacher{private int no;private String name;private int age;private String seminary;public Teacher(int _no,String _name,int _age,String _seminary){this.age _age;this.name _name;this.no _no;this.seminary _seminary;}public int getAge(){return this.age;}public String getName(){return this.name;}public int getNo(){return this.no;}public boolean equals(Teacher a){return this.age a.age this.no a.no this.seminary.equals(a.seminary) this.name.equals(a.name);} public String toString(){return no: this.no , name: this.name , age: this.age , seminary: this.seminary;}
}class TeacherManagement{public ArrayListTeacher teachers new ArrayListTeacher();public void add(Teacher t){this.teachers.add(t);}public void search(int _age){int flag 1;System.out.println(search by age:);for(int i0;iteachers.size();i){if(_age teachers.get(i).getAge()){flag 0;System.out.println(teachers.get(i));}}if(flag 1){System.out.println(no such teacher);}}public void search(String _name){int flag 1;System.out.println(search by name:);for(int i0;iteachers.size();i){if(_name.equals(teachers.get(i).getName())){flag 0;System.out.println(teachers.get(i));}}if(flag 1){System.out.println(no such teacher);}}public void sort(){for(int i0;iteachers.size();i){for(int j0;jteachers.size()-1;j){if(teachers.get(i).getNo() teachers.get(j).getNo()){Teacher tmp teachers.get(i);teachers.set(i,teachers.get(j));teachers.set(j,tmp);}}}}
}public class Main {static Scanner in new Scanner(System.in);public static void main(String[] args) { int num in.nextInt();TeacherManagement tm new TeacherManagement();for(int i0;inum;i){int no in.nextInt();String name in.next();int age in.nextInt();String seminary in.next();Teacher tmp new Teacher(no,name,age,seminary);tm.add(tmp);}tm.sort();for(int i0;itm.teachers.size();i){System.out.println(tm.teachers.get(i));}String s in.next();int nm 0;try{nm Integer.valueOf(s);tm.search(nm);} catch (Exception e){tm.search(s);}s in.next();try{nm Integer.valueOf(s);tm.search(nm);} catch (Exception e){tm.search(s);}}
}7-5 编写一个类Shop商店、内部类InnerCoupons内部购物券 编写一个类Shop商店该类中有一个成员内部类InnerCoupons内部购物券可以用于购买该商店的牛奶假设每箱牛奶售价为50元。要求如下 1Shop类中有私有属性milkCount牛奶的箱数int类型、公有的成员方法setMilkCount( )和getMilkCount( )分别用于设置和获取牛奶的箱数。 2成员内部类InnerCoupons有公有属性value面值int类型一个带参数的构造方法可以设定购物券的面值value一个公有的成员方法buy( )要求输出使用了面值为多少的购物券进行支付同时使商店牛奶的箱数减少value/50。 3Shop类中还有成员变量coupons50面值为50元的内部购物券类型为InnerCoupons、coupons100面值为100元的内部购物券类型为InnerCoupons。 4在Shop类的构造方法中调用内部类InnerCoupons的带参数的构造方法分别创建上面的购物券coupons50、coupons100。 在测试类Main中创建一个Shop类的对象myshop从键盘输入一个整数大于或等于3将其设置为牛奶的箱数。假定有顾客分别使用了该商店面值为50的购物券、面值为100的购物券各消费一次分别输出消费后商店剩下的牛奶箱数。
输入格式:
输入一个大于或等于3的整数。
输出格式:
使用了面值为50的购物券进行支付 牛奶还剩XX箱 使用了面值为100的购物券进行支付 牛奶还剩XX箱
输入样例:
在这里给出一组输入。例如
5输出样例:
在这里给出相应的输出。例如
使用了面值为50的购物券进行支付
牛奶还剩4箱
使用了面值为100的购物券进行支付
牛奶还剩2箱
import java.math.*;
import java.util.*;class Shop{private int milkCount;public InnerCoupons coupons50 new InnerCoupons(50);public InnerCoupons coupons100 new InnerCoupons(100);public void setMilkCount(int nums){this.milkCount nums;} public int getMilkCount(){return this.milkCount;}public Shop(int nums){this.milkCount nums;}public class InnerCoupons{public int value;public InnerCoupons(int _value){this.value _value;}public void buy(){System.out.println(使用了面值为 value 的购物券进行支付);milkCount - value/50;System.out.println(牛奶还剩 milkCount 箱);}}
}
public class Main {static Scanner in new Scanner(System.in);public static void main(String[] args) {int n in.nextInt();Shop shop new Shop(n);shop.coupons50.buy();shop.coupons100.buy();}
}7-6 jmu-Java-04面向对象进阶-01-接口-Comparable 编写实现Comparable接口的PersonSortable类使其按name以及age排序
1.编写PersonSortable类
属性private name(String)、private age(int) 有参构造函数参数为name,age toString函数返回格式为name-age 实现Comparable接口实现先对name升序排序如果name相同则对age进行升序排序
2.main方法中
首先输入n输入n行name age并创建n个对象放入数组对数组进行排序后输出。最后一行使用System.out.println(Arrays.toString(PersonSortable.class.getInterfaces()));输出PersonSortable所实现的所有接口
输入样例:
5
zhang 15
zhang 12
wang 14
Wang 17
li 17
输出样例:
Wang-17
li-17
wang-14
zhang-12
zhang-15
//这行是标识信息
import java.math.*;
import java.util.*;class PersonSortable implements ComparablePersonSortable{private String name;private int age;public String getName(){return this.name;}public int getAge(){return this.age;}public PersonSortable(String _name,int _age){this.name _name;this.age _age;}public String toString(){return this.name - this.age;}public int compareTo(PersonSortable person){if(this.name.equals(person.getName())){return this.age - person.getAge(); }return this.name.compareTo(person.getName());}
}public class Main {static Scanner in new Scanner(System.in);public static void main(String[] args) {int n in.nextInt();PersonSortable[] ps new PersonSortable[n];for(int i0;in;i){String name in.next();int age in.nextInt();ps[i] new PersonSortable(name,age);}Arrays.sort(ps);for(PersonSortable p : ps){System.out.println(p);}System.out.println(Arrays.toString(PersonSortable.class.getInterfaces()));}
}7-7 jmu-Java-03面向对象-06-继承覆盖综合练习-Person、Student、Employee、Company 定义Person抽象类Student类、Company类Employee类。
Person类的属性String name, int age, boolean genderPerson类的方法:
public Person(String name, int age, boolean gender);
public String toString(); //返回name-age-gender格式的字符串
public boolean equals(Object obj);//比较name、age、gender,都相同返回true,否则返回false
Student类继承自Person属性:String stuNo, String clazzStudent类的方法:
//建议使用super复用Person类的相关有参构造函数
public Student(String name, int age, boolean gender, String stuNo, String clazz);
public String toString(); //返回 “Student:person的toString-stuNo-clazz”格式的字符串
public boolean equals(Object obj);//首先调用父类的equals方法,如果返回true则继续比较stuNo与clazz。Company类属性String nameCompany类方法:
public Company(String name);
public String toString(); //直接返回name
public boolean equals(Object obj);//name相同返回trueEmployee类继承自Person属性Company company, double salaryEmployee类方法
//建议使用super复用Person类的相关有参构造函数
public Employee(String name, int age, boolean gender, double salary, Company company);
public String toString(); //返回Employee:person的toString-company-salary格式的字符串
public boolean equals(Object obj);//首先调用父类的equals方法,如果返回true。再比较company与salary。
//比较salary属性时使用DecimalFormat df new DecimalFormat(#.#);保留1位小数编写equals方法重要说明
对Employee的company属性的比较。要考虑传入为null的情况。如果company不为null且传入为null返回false对所有String字符类型比较时也要考虑null情况。
提示
排序可使用Collections.sortequals方法要考虑周全
main方法说明
创建若干Student对象、Employee对象。 输入s然后依次输入name age gender stuNo clazz创建Student对象。 输入e然后依次输入name age gender salary company创建Employee对象。 然后将创建好的对象放入ListPerson personList。输入其他字符则结束创建。
创建说明: 对于String类型如果为null则不创建对象而赋值为null。对于company属性如果为null则赋值为null否则创建相应的Company对象。 对personList中的元素实现先按照姓名升序排序姓名相同再按照年龄升序排序。提示可使用ComparablePerson或ComparatorPerson 接受输入如果输入为exit则return退出程序否则继续下面步骤。 将personList中的元素按照类型分别放到stuList与empList。注意不要将两个内容相同的对象放入列表是否相同是根据equals返回结果进行判定。 输出字符串stuList然后输出stuList中的每个对象。 输出字符串empList然后输出empList中的每个对象。
1-3为一个测试点4-6为一个测试点
输入样例
s zhang 23 false 001 net15
e wang 18 true 3000.51 IBM
s zhang 23 false 001 net15
e bo 25 true 5000.51 IBM
e bo 25 true 5000.52 IBM
e bo 18 true 5000.54 IBM
e tan 25 true 5000.56 IBM
e tan 25 true 5000.51 IBM
s wang 17 false 002 null
s wang 17 false 002 null
e hua 16 false 1000 null
s wang 17 false 002 net16
e hua 16 false 1000 null
e hua 18 false 1234 MicroSoft
!
continue
输出样例
Employee:bo-18-true-IBM-5000.54
Employee:bo-25-true-IBM-5000.51
Employee:bo-25-true-IBM-5000.52
Employee:hua-16-false-null-1000.0
Employee:hua-16-false-null-1000.0
Employee:hua-18-false-MicroSoft-1234.0
Employee:tan-25-true-IBM-5000.56
Employee:tan-25-true-IBM-5000.51
Student:wang-17-false-002-null
Student:wang-17-false-002-null
Student:wang-17-false-002-net16
Employee:wang-18-true-IBM-3000.51
Student:zhang-23-false-001-net15
Student:zhang-23-false-001-net15
stuList
Student:wang-17-false-002-null
Student:wang-17-false-002-net16
Student:zhang-23-false-001-net15
empList
Employee:bo-18-true-IBM-5000.54
Employee:bo-25-true-IBM-5000.51
Employee:hua-16-false-null-1000.0
Employee:hua-18-false-MicroSoft-1234.0
Employee:tan-25-true-IBM-5000.56
Employee:tan-25-true-IBM-5000.51
Employee:wang-18-true-IBM-3000.51import java.math.*;
import java.util.*;
import java.text.*;class Person implements ComparablePerson{public String name;public int age;public boolean gender;public Person(String name, int age, boolean gender){this.name name;this.gender gender;this.age age;}public String toString(){return this.name - this.age - this.gender;} public boolean equals(Object obj){Person ob (Person) obj;return this.name.equals(ob.name) this.age ob.age this.gender ob.gender;}public int compareTo(Person p){if(this.name.equals(p.name)){return this.age - p.age;}return this.name.compareTo(p.name);}
}class Student extends Person{String stuNo;String clazz;//建议使用super复用Person类的相关有参构造函数public Student(String name, int age, boolean gender, String stuNo, String clazz){super(name,age,gender);this.stuNo stuNo;this.clazz clazz;}public String toString(){return Student: super.toString() - this.stuNo - this.clazz;} //返回 “Student:person的toString-stuNo-clazz”格式的字符串public boolean equals(Object obj){if(super.equals(obj)true){Student ob (Student)obj;if(this.clazz.equals(ob.clazz) this.stuNo.equals(ob.stuNo)){return true;}}return false;}//首先调用父类的equals方法,如果返回true则继续比较stuNo与clazz。}class Company{String name;public Company(String name){this.name name;}public String toString(){return this.name;}public boolean equals(Object obj){Company ob (Company) obj;return this.name.equals(ob.name);}//name相同返回true
}class Employee extends Person{public Company company;public double salary;//建议使用super复用Person类的相关有参构造函数public Employee(String name, int age, boolean gender, double salary, Company company){super(name,age,gender);this.salary salary;this.company company;}public String toString(){return Employee: super.toString() - this.company - this.salary;} public boolean equals(Object obj){if(super.equals(obj)){Employee ob (Employee)obj;String a new DecimalFormat(#.#).format(this.salary);String b new DecimalFormat(#.#).format(ob.salary);return this.company.equals(ob.company) a.equals(b);}return false;}//首先调用父类的equals方法,如果返回true。再比较company与salary。//比较salary属性时使用DecimalFormat df new DecimalFormat(#.#);保留1位小数
}public class Main {static Scanner in new Scanner(System.in);public static void main(String[] args) {ListPerson ps new ArrayList();ListStudent st new ArrayList();ListEmployee em new ArrayList();while(true){String op in.next();if(op.equals(s)){String name in.next();int age in.nextInt();boolean gender in.nextBoolean();String stuNo in.next();String clazz in.next();Student s new Student(name,age,gender,stuNo,clazz);ps.add(s);st.add(s);}else if(op.equals(e)){String name in.next();int age in.nextInt();boolean gender in.nextBoolean();double salary in.nextDouble();String company in.next();Employee e new Employee(name,age,gender,salary,new Company(company));ps.add(e);em.add(e);}else{Collections.sort(ps);for(int i0;ips.size();i) {System.out.println(ps.get(i));}String tempString in.next();if(tempString.compareTo(exit)0||tempString.compareTo(return)0) {return;}ListStudent tst new ArrayList();ListEmployee tem new ArrayList();System.out.println(stuList);for(int i0;ist.size();i) {boolean flag true;for(int j0;jtst.size();j){if(st.get(i).equals(tst.get(j))){//System.out.println(1);flag false;}}if(flag){tst.add(st.get(i));}}Collections.sort(tst);for(int i0;itst.size();i){System.out.println(tst.get(i));}System.out.println(empList);//System.out.println(em.size());for(int i0;iem.size();i) {boolean flag true;for(int j0;jtem.size();j){if(em.get(i).equals(tem.get(j))){flag false;}}if(flag){tem.add(em.get(i));}}Collections.sort(tem);//System.out.println(tem.size());for(int i0;item.size();i){System.out.println(tem.get(i));}}}}
}7-8 定义接口Biology、Animal、类Person、子类Pupil
1定义Biology生物、Animal动物2个接口其中Biology声明了抽象方法breathe( )Animal声明了抽象方法eat( )和sleep( )。 2定义一个类Person人实现上述2个接口实现了所有的抽象方法同时自己还有一个方法think( )。breathe()、eat()、sleep()、think()四个方法分别输出我喜欢呼吸新鲜空气我会按时吃饭早睡早起身体好我喜欢思考 3定义Person类的子类Pupil小学生有私有的成员变量school学校公有的成员方法setSchool( )、getSchool( )分别用于设置、获取学校信息。 4在测试类Main中用Pupil类创建一个对象zhangsan。尝试从键盘输入学校信息给zhangsan获取到该信息后输出该学校信息格式为“我的学校是XXX”依次调用zhangsan的breathe()、eat()、sleep()、think()方法。
输入格式:
从键盘输入一个学校名称字符串格式
输出格式:
第一行输出我的学校是XXXXXX为输入的学校名称 第二行是breathe()方法的输出 第三行是eat()方法的输出 第四行是sleep()方法的输出 第五行是think()方法的输出
输入样例:
在这里给出一组输入。例如
新余市逸夫小学输出样例:
在这里给出相应的输出。例如
我的学校是新余市逸夫小学
我喜欢呼吸新鲜空气
我会按时吃饭
早睡早起身体好
我喜欢思考 import java.math.*;
import java.util.*;interface Biology{abstract void breathe();
}interface Animal{abstract void eat();abstract void sleep();
}class Person implements Animal,Biology{public void think(){System.out.println(我喜欢思考);}public void eat(){System.out.println(我会按时吃饭);}public void sleep(){System.out.println(早睡早起身体好);}public void breathe(){System.out.println(我喜欢呼吸新鲜空气);}
}class Pupil extends Person{String school;public void setSchool(String _school){this.school _school;}public String getSchool(){return this.school;}
}public class Main {static Scanner in new Scanner(System.in);public static void main(String[] args) {String sc in.next();System.out.println(我的学校是 sc); Pupil p new Pupil();p.breathe() ;p.eat();p.sleep();p.think();}
} 7-9 Employee类的层级结构
定义四个类分别为Employee类、SalariedEmployee类、HourlyEmployee类和CommissionEmployee类。其中Employee类是其他三个类的父类。Employee类包含姓名和身份证号。除此之外SalariedEmployee类还应包含每月工资HourlyEmployee类还应包含每小时工资数和工作时间数CommissionEmployee还应包含提成比例和销售总额。其中HourlyEmployee的工资为每小时工资数×工作时间数CommissionEmployee的工资为提成比例×销售总额。每个类都应有合适的构造方法、数据成员的设置和读取方法。编写一个测试程序创建这些类的对象并输出与对象相关的信息。注意子类有时需调用父类的构造方法和被覆盖的方法成员变量定义为private对有些方法实现重载。测试程序如下所示 public static void main(String [] args){Scanner innew Scanner(System.in);Employee [] enew Employee[3];e[0]new SalariedEmployee(in.next(),in.next(),in.nextDouble());e[1]new HourlyEmployee(in.next(),in.next(),in.nextDouble(),in.nextDouble());e[2]new CommissionEmployee(in.next(),in.next(),in.nextDouble(),in.nextDouble());for(int i0;ie.length;i){ System.out.println(e[i].getSalary());System.out.println(e[i]);}
}输入格式:
输入三行。第一行为一个SalariedEmployee对象的姓名身份证号和每月工资。第二行为一个HourlyEmployee对象的姓名、身份证号、每小时工资数、工作时间。第三行为一个CommissionEmployee对象的姓名、身份证号、提成比例和销售总额。
输出格式:
输出三个对象的工资和对象的其他信息。每一个对象输出两行第一行为工资第二行为对象的信息。
输入样例:
Mike 0001 5000
Jack 0002 20 300
Tom 0003 0.2 50000
输出样例:
5000.0
SalariedEmployee[nameMike,id0001][monthSalary5000.0]
6000.0
HourlyEmployee[nameJack,id0002][hourSalary20.0,workhour300.0]
10000.0
CommissionEmployee[nameTom,id0003][commissionRatio0.2,sale50000.0]
import java.math.*;
import java.util.*;class Employee{String name;String id;public Employee(String _name, String _id){this.name _name;this.id _id;}public String toString(){return [name this.name ,id this.id ];}public double getSalary(){return 0.0;}
}class SalariedEmployee extends Employee{double monthSalary;public double getSalary(){return this.monthSalary;}public String toString(){return SalariedEmployee super.toString() [monthSalary this.monthSalary ];}public SalariedEmployee(String _name, String _id, double _monthSalary){super(_name,_id);this.monthSalary _monthSalary;}
}class HourlyEmployee extends Employee{double hourSalary;double workhour;public HourlyEmployee(String _name, String _id, double _hourSalary, double _workhour){super(_name,_id);this.hourSalary _hourSalary;this.workhour _workhour;}public double getSalary(){return this.hourSalary * this.workhour;}public String toString(){return HourlyEmployee super.toString() [hourSalary this.hourSalary ,workhour this.workhour ];}
}class CommissionEmployee extends Employee{double commissionRatio;double sale;public CommissionEmployee(String _name,String _id, double _commissionRatio, double _sale){super(_name,_id);this.commissionRatio _commissionRatio;this.sale _sale;}public double getSalary(){return this.sale * this.commissionRatio;}public String toString(){return CommissionEmployee super.toString() [commissionRatio this.commissionRatio ,sale this.sale ];}
}public class Main {public static void main(String [] args){Scanner in new Scanner(System.in);Employee [] e new Employee[3];e[0] new SalariedEmployee(in.next(),in.next(),in.nextDouble());e[1] new HourlyEmployee(in.next(),in.next(),in.nextDouble(),in.nextDouble());e[2] new CommissionEmployee(in.next(),in.next(),in.nextDouble(),in.nextDouble());for(int i0;ie.length;i){ System.out.println(e[i].getSalary());System.out.println(e[i]);}}
}