这个java代码在继承方面有什么错误? 包继承最新版本; 公共类继承最新版本{ 公共静态void main(字符串[]args){ 人员p1=新人员(12名,“ekaf”、“亚特兰大”、“男性”); 雇员e1=新雇员(23,“埃卡夫”,“亚特兰大”,“男性”,12000); e1.ageCategory(); e1.性别认同(); e1.显示(); ((雇员)p1.display(); } } 班主任{ 智力年龄; 字符串名; 字符串地址; 字符串年龄组; 性别保护; 无法访问私有字符串;//子类无法访问 person(整数年龄、字符串名称、字符串地址、字符串性别){ 这个。年龄=年龄; this.name=name; 这个地址=地址; 这个。性别=性别; } 字符串ageCategory(){ 如果(年龄)
工资怎么变成24000 在employe类的genderIdentity()方法中,您使用这个java代码在继承方面有什么错误? 包继承最新版本; 公共类继承最新版本{ 公共静态void main(字符串[]args){ 人员p1=新人员(12名,“ekaf”、“亚特兰大”、“男性”); 雇员e1=新雇员(23,“埃卡夫”,“亚特兰大”,“男性”,12000); e1.ageCategory(); e1.性别认同(); e1.显示(); ((雇员)p1.display(); } } 班主任{ 智力年龄; 字符串名; 字符串地址; 字符串年龄组; 性别保护; 无法访问私有字符串;//子类无法访问 person(整数年龄、字符串名称、字符串地址、字符串性别){ 这个。年龄=年龄; this.name=name; 这个地址=地址; 这个。性别=性别; } 字符串ageCategory(){ 如果(年龄),java,inheritance,Java,Inheritance,工资怎么变成24000 在employe类的genderIdentity()方法中,您使用==将性别与男性进行比较。此条件为false,因为性别和男性是不同的字符串对象(即使它们具有相同的内容/文本)。您应该使用.equals()来比较这两个字符串。现在,工资增加了一倍,因为gender==“male”和gender==“female”都没有返回true 为什么agecategory为空我写e1.agecategory时对象e1没有得到年龄类别 编写e1.agecategory()时,调用名为a
==
将性别
与男性
进行比较。此条件为false,因为性别
和男性
是不同的字符串对象(即使它们具有相同的内容/文本)。您应该使用.equals()
来比较这两个字符串。现在,工资增加了一倍,因为gender==“male”
和gender==“female”
都没有返回true
为什么agecategory为空我写e1.agecategory时对象e1没有得到年龄类别
编写e1.agecategory()
时,调用名为agecategory()
的方法。此方法仅返回字符串对象,但实际上不使用它执行任何其他操作。任何地方都没有为agegroup
变量赋值的代码(它必须看起来像agegroup=;
,因此变量保持其默认值null
)
为什么((雇员)p1.display();引发异常
这是因为,(雇员)p1
,您尝试将p1
对象强制转换为employe
类型。这无法完成,因为p1
仅定义为人员,而不是雇员。另一种方法可以很好地工作,因为通过编写类employe扩展person
,每个雇员都是已知的也要成为人
这有什么用
p2人=新雇员(23人,“ekaf”,“亚特兰蒂斯”,“男性”,12000人)
这样做是有用的,因为您正在创建一个变量“代码>代码2>代码>,它可以引用任何类型的<代码>人<代码>,它不限于只引用<代码> Suffe< /Cord>对象。这在您希望能够处理任何类型的<代码>人>代码>的情况下是有用的。java仍然记得这个PAR。但是,ticular person是一个employe,因此您可以稍后将其强制转换为更具体的
employe
类型,并在其上调用employe
-特定方法
工资怎么变成24000
在employe类的genderIdentity()方法中,您使用==
将性别
与男性
进行比较。此条件为false,因为性别
和男性
是不同的字符串对象(即使它们具有相同的内容/文本)。您应该使用.equals()
来比较这两个字符串。现在,工资增加了一倍,因为gender==“male”
和gender==“female”
都没有返回true
为什么agecategory为空我写e1.agecategory时对象e1没有得到年龄类别
编写e1.agecategory()
时,调用名为agecategory()
的方法。此方法仅返回字符串对象,但实际上不使用它执行任何其他操作。任何地方都没有为agegroup
变量赋值的代码(它必须看起来像agegroup=;
,因此变量保持其默认值null
)
为什么((雇员)p1.display();引发异常
这是因为,(雇员)p1
,您尝试将p1
对象强制转换为employe
类型。这无法完成,因为p1
仅定义为人员,而不是雇员。另一种方法可以很好地工作,因为通过编写类employe扩展person
,每个雇员都是已知的也要成为人
这有什么用
p2人=新雇员(23人,“ekaf”,“亚特兰蒂斯”,“男性”,12000人)
这样做是有用的,因为您正在创建一个变量“代码>代码2>代码>,它可以引用任何类型的<代码>人<代码>,它不限于只引用<代码> Suffe< /Cord>对象。这在您希望能够处理任何类型的<代码>人>代码>的情况下是有用的。java仍然记得这个PAR。但是,特定的人是一个雇员,所以你可以将其转换为更具体的
雇员
稍后键入并调用雇员
-特定方法。p1
是一个人
,而不是雇主
。请在发布代码时更加努力地格式化您的代码。现在到处都是,而且is不想用一个简单的例子来说明这个问题。你还应该读到你不能将一个类转换成一个子类。你可以用另一种方法,但这不会改变将要执行的代码。预期的op是什么?p1
是一个人,而不是一个雇主当你发布它的时候,它会被删除。现在到处都是-这不像是一个简单的例子来说明这个问题。你还应该读到你不能将一个类转换成一个子类。你可以反过来,但这不会改变将要执行的代码。预期的操作是什么?非常感谢你的回答。它很有效帮了我很多忙:)谢谢
package inheritencelatest;
public class InheritenceLatest {
public static void main(String[] args) {
person p1=new person(12,"ekaf","atlanta","male");
employe e1=new employe(23,"ekaf","atlanta","male",12000);
e1.ageCategory();
e1.genderIdentity();
e1.display();
((employe)p1).display();
}
}
class person {
int age;
String name;
String Address;
String ageGroup;
protected String gender;
private String canNotBeAccesed; //cant be accessed by subclass
person(int age,String name,String Address,String gender) {
this.age=age;
this.name=name;
this.Address=Address;
this.gender=gender;
}
String ageCategory() {
if(age<10)
return("kid");
else if(age<20 &&age>10)
return("Teen");
else if(age<50&&age>20)
return("adult");
else
return("senior");
}
protected void genderIdentity() {
if("male".equals(gender))
System.out.println("male");
else if(gender=="female")
System.out.println("female");
else
System.out.println("Special");
}
}
class employe extends person {
double salary;
employe(int age,String name,String Address,String gender,int salary) {
super(age,name,Address,gender);
this.salary=salary;
this.name=name;
}
@Override
protected void genderIdentity() {
if(gender=="male")
salary=salary;
if(gender=="female")
salary=1.5*salary;
else
salary=2*salary;
}
void display() {
System.out.println(age +" " +name+" "+Address+" "+salary+" "+gender+ " "+ageGroup);
}