关于子父类的调用问题
来源:互联网 发布:think in java 英文版 编辑:程序博客网 时间:2024/06/10 22:22
设计一个人员类(Person),以及从Person类派生出助教类(Assistant)、讲师类(Instructor)、副教授类(AssistantProfesson)和教授类(Professor)。四种类型教师的工资收入计算公式如下:
工资收入=基本工资+授课时数×每课时报酬
其中,助教基本工资为800元,每课时报酬25元,讲师基本工资为1000元,每课时报酬35元,副教授基本工资为1200元,每课时报酬40元,教授基本工资为1400元,每课时报酬50元。
将人员类定义为抽象类,具体定义如下:
abstract class Person {
String name;
double salary; //工资收入
int hour; //课时
abstract double countSalary(int hour);//计算工资收入
abstract public String toString();//返回员工的姓名、职称、收入字符串
abstract public boolean equals(Person p);//与另一员工比较职称及工资收入是否一样
}
请为四种类型教师自行设计合理的类,但必须继承自Person类,另编写一个测试类测试你所编写的类,要求输入两个员工的姓名,职称和授课时数后分别显示他们的姓名、职称、收入,并比较两人职称及工资收入是否一样。
abstract class Person{ //String title;
String name;
double salary; //工资收入
int hour; //课时
abstract double countSalary(int hour);//计算工资收入
abstract public String toString();//返回员工的姓名、职称、收入字符串
abstract public boolean equals(Person p);//与另一员工比较职称及工资收入是否一样
}
class Assistant extends Person{String title;
double countSalary(int hour){
salary=800+hour*25;
return salary;
}
public String toString(){
return "姓名 "+name+" 职称 "+title+" 收入 "+salary;
}
public boolean equals(Person p){
boolean flag=false;
if(this.title.equals(p.title)&&p.salary==this.salary)
flag=true;
return flag;
}
}
class Instructor extends Person{
String title;
double countSalary(int hour){
salary=1000+hour*35;
return salary;
}
public String toString(){
return "姓名 "+name+" 职称 "+title+" 收入 "+salary;
}
public boolean equals(Person p){
boolean flag=false;
if(this.title.equals(p.title)&&p.salary==this.salary)
flag=true;
return flag;
}
}
class AssistantProfesson extends Person{
String title;
double countSalary(int hour){
salary=1200+hour*40;
return salary;
}
public String toString(){
return "姓名 "+name+" 职称 "+title+" 收入 "+salary;
}
public boolean equals(Person p){
boolean flag=false;
if(this.title.equals(p.title)&&p.salary==this.salary)
flag=true;
return flag;
}
}
class Professor extends Person{
String title;
double countSalary(int hour){
salary=1400+hour*50;
return salary;
}
public String toString(){
return "姓名 "+name+" 职称 "+title+" 收入 "+salary;
}
public boolean equals(Person p){
boolean flag=false;
if(this.title.equals(p.title)&&p.salary==this.salary)
flag=true;
return flag;
}
}
public class Test4{
public static void main(String []args){
//Scanner reader=new Scanner(System.in);
Assistant p1=new Assistant();
p1.name="李强";
p1.title="Assistant";
p1.countSalary(10);
System.out.println(p1.toString());
Instructor p2=new Instructor();
p2.name="陈晨";
p2.title="Instructor";
p2.countSalary(5);
System.out.println(p2.toString());Person p22=p2;
String out=p1.equals(p22) ? "两人职称及工资收入一样":"两人职称及工资收入不一样";
System.out.println(out);
}
}
C:\Users\lenovo\Desktop\9\Test4.java:20: 找不到符号
符号: 变量 title
位置: 类 Person
if(this.title.equals(p.title)&&p.salary==this.salary)
^
C:\Users\lenovo\Desktop\9\Test4.java:36: 找不到符号
符号: 变量 title
位置: 类 Person
if(this.title.equals(p.title)&&p.salary==this.salary)
^
C:\Users\lenovo\Desktop\9\Test4.java:52: 找不到符号
符号: 变量 title
位置: 类 Person
if(this.title.equals(p.title)&&p.salary==this.salary)
^
C:\Users\lenovo\Desktop\9\Test4.java:68: 找不到符号
符号: 变量 title
位置: 类 Person
if(this.title.equals(p.title)&&p.salary==this.salary)
^
4 错误
处理已完成。
如何才能不用在Person类中定义String title;在子类的方法中调用
public boolean equals(Person p){
boolean flag=false;
if(this.title.equals(p.title)&&p.salary==this.salary)
flag=true;
return flag;
}
工资收入=基本工资+授课时数×每课时报酬
其中,助教基本工资为800元,每课时报酬25元,讲师基本工资为1000元,每课时报酬35元,副教授基本工资为1200元,每课时报酬40元,教授基本工资为1400元,每课时报酬50元。
将人员类定义为抽象类,具体定义如下:
abstract class Person {
String name;
double salary; //工资收入
int hour; //课时
abstract double countSalary(int hour);//计算工资收入
abstract public String toString();//返回员工的姓名、职称、收入字符串
abstract public boolean equals(Person p);//与另一员工比较职称及工资收入是否一样
}
请为四种类型教师自行设计合理的类,但必须继承自Person类,另编写一个测试类测试你所编写的类,要求输入两个员工的姓名,职称和授课时数后分别显示他们的姓名、职称、收入,并比较两人职称及工资收入是否一样。
abstract class Person{ //String title;
String name;
double salary; //工资收入
int hour; //课时
abstract double countSalary(int hour);//计算工资收入
abstract public String toString();//返回员工的姓名、职称、收入字符串
abstract public boolean equals(Person p);//与另一员工比较职称及工资收入是否一样
}
class Assistant extends Person{String title;
double countSalary(int hour){
salary=800+hour*25;
return salary;
}
public String toString(){
return "姓名 "+name+" 职称 "+title+" 收入 "+salary;
}
public boolean equals(Person p){
boolean flag=false;
if(this.title.equals(p.title)&&p.salary==this.salary)
flag=true;
return flag;
}
}
class Instructor extends Person{
String title;
double countSalary(int hour){
salary=1000+hour*35;
return salary;
}
public String toString(){
return "姓名 "+name+" 职称 "+title+" 收入 "+salary;
}
public boolean equals(Person p){
boolean flag=false;
if(this.title.equals(p.title)&&p.salary==this.salary)
flag=true;
return flag;
}
}
class AssistantProfesson extends Person{
String title;
double countSalary(int hour){
salary=1200+hour*40;
return salary;
}
public String toString(){
return "姓名 "+name+" 职称 "+title+" 收入 "+salary;
}
public boolean equals(Person p){
boolean flag=false;
if(this.title.equals(p.title)&&p.salary==this.salary)
flag=true;
return flag;
}
}
class Professor extends Person{
String title;
double countSalary(int hour){
salary=1400+hour*50;
return salary;
}
public String toString(){
return "姓名 "+name+" 职称 "+title+" 收入 "+salary;
}
public boolean equals(Person p){
boolean flag=false;
if(this.title.equals(p.title)&&p.salary==this.salary)
flag=true;
return flag;
}
}
public class Test4{
public static void main(String []args){
//Scanner reader=new Scanner(System.in);
Assistant p1=new Assistant();
p1.name="李强";
p1.title="Assistant";
p1.countSalary(10);
System.out.println(p1.toString());
Instructor p2=new Instructor();
p2.name="陈晨";
p2.title="Instructor";
p2.countSalary(5);
System.out.println(p2.toString());Person p22=p2;
String out=p1.equals(p22) ? "两人职称及工资收入一样":"两人职称及工资收入不一样";
System.out.println(out);
}
}
C:\Users\lenovo\Desktop\9\Test4.java:20: 找不到符号
符号: 变量 title
位置: 类 Person
if(this.title.equals(p.title)&&p.salary==this.salary)
^
C:\Users\lenovo\Desktop\9\Test4.java:36: 找不到符号
符号: 变量 title
位置: 类 Person
if(this.title.equals(p.title)&&p.salary==this.salary)
^
C:\Users\lenovo\Desktop\9\Test4.java:52: 找不到符号
符号: 变量 title
位置: 类 Person
if(this.title.equals(p.title)&&p.salary==this.salary)
^
C:\Users\lenovo\Desktop\9\Test4.java:68: 找不到符号
符号: 变量 title
位置: 类 Person
if(this.title.equals(p.title)&&p.salary==this.salary)
^
4 错误
处理已完成。
如何才能不用在Person类中定义String title;在子类的方法中调用
public boolean equals(Person p){
boolean flag=false;
if(this.title.equals(p.title)&&p.salary==this.salary)
flag=true;
return flag;
}
0 0
- 关于子父类的调用问题
- 关于Page_Load的调用问题
- 关于调用exe的问题
- 关于远程桌面的调用问题
- 关于applicationWillTerminate的调用问题
- 关于多线程调用的问题
- 求救(关于窗体调用的问题)
- 关于VC调用Matlab的问题
- 关于调用程序的窗口信息处理问题
- 关于构造对象时候的调用问题
- 关于RMI远程调用失败的问题
- 关于java调用mysqldump的问题
- 关于vc++调用 exe文件的问题
- 关于调用不到方法的问题
- 关于Firefox3 不能调用DWR的问题
- 关于构造函数的调用问题
- 关于DELPHI调用JAVA服务的问题
- 关于.NET调用外部CSS的问题
- C# 相对路径合集
- hdu2962 二分 + spfa
- 0-0 编译hadoop2.2.0
- Oracle 日期的处理
- C语言基础
- 关于子父类的调用问题
- C语言中 数据类型的转换
- Mahout安装
- 我想利用时钟写个无限弹窗的小程序 ,但是程序会自动停止
- 0-1 伪分布hadoop和hbase搭建
- 背包问题的一些想法
- Ubuntu Tweak简介和安装
- 4.3.0
- 218分照样可以成为同声传译研究生3