
新手写了一个简单的java程序,请高手看看,帮忙找错,给点学习建议!
题目:第四部分抽象类1.假定人这个抽象类派生两个子类,分别为中国人和外国人两种类,他们有共同的特征,比如姓名、年龄、性别,也有一些不同的特征,比如中国人比较有礼貌,所以他...
题目:
第四部分 抽象类
1.假定人这个抽象类派生两个子类,分别为中国人和外国人两种类,他们有共同的特征,比如姓名、年龄、性别,也有一些不同的特征,比如中国人比较有礼貌,所以他有个新的特征礼貌性,生成中国人对象时,可以给该特征赋值为“有礼貌”,外国人比较习惯竞争,所以他有个新的特征竞争性,生成外国人对象时,可以为该特征的赋值为“有竞争性”。另外他们还有一些共同的行为,比如吃饭、睡觉、说话,但是其中吃饭的方式和说话的语言不同。试定义一个抽象类—人,其中包含这两种人的共同特征和行为,为人这个抽象类派生子类中国人和外国人,其中对他们不同的行为(吃饭、说话)进行实现。要求实现结果如下图所示。
提示:
用抽象类实现,凡是共同的东西,写在父类中,凡是新增的东西,写在各个子类中。会使用到super关键字,表示属性的成员变量一般用private修饰,
输出结果示例:(见图)
class People
{
private String name;
private String sex;
private int age;
void eat()
{
System.out.printf("使用");
}
void speak()
{
System.out.printf("说");
}
void sleep()
{
System.out.printf("睡觉");
}
}
class PeopleOne extends People
{
String name = '张三';
String sex = '男';
int age = 19;
String getname()
{ return name; }
String getsex()
{ return sex; }
int getage()
{ return age; }
void character()
{
System.out.println("礼貌性 有礼貌");
}
void use()
{
System.out.println(People.eat()+"筷子");
}
void language()
{
System.out.println(people.speak()+"中文");
}
}
class PeopleTwo extends People
{
String name = 'Lily';
String sex = '女';
int age = 20;
String getname()
{ return name; }
String getsex()
{ return sex; }
int getage()
{ return age; }
void character()
{
System.out.println("竞争性 有竞争性");
}
void use()
{
System.out.println(People.eat()+"刀叉");
}
void language()
{
System.out.println(people.speak()+"外文");
}
}
class Noname5
{
public static void main(String[] args)
{
System.out.println("姓名 "+PeopleOne.getname()+" 性别 "+PeopleOne.getsex()+" 年龄 "+PeopleOne.getage());
peopleone.character();
Peopleone.use();
peopleone.language();
people.sleep();
System.out.println("========================");
System.out.println("姓名 "+Peopletwo.getname()+" 性别 "+Peopletwo.getsex()+" 年龄 "+Peopletwo.getage());
peopletwo.character();
Peopletwo.use();
peopletwo.language();
people.sleep();
}
} 展开
第四部分 抽象类
1.假定人这个抽象类派生两个子类,分别为中国人和外国人两种类,他们有共同的特征,比如姓名、年龄、性别,也有一些不同的特征,比如中国人比较有礼貌,所以他有个新的特征礼貌性,生成中国人对象时,可以给该特征赋值为“有礼貌”,外国人比较习惯竞争,所以他有个新的特征竞争性,生成外国人对象时,可以为该特征的赋值为“有竞争性”。另外他们还有一些共同的行为,比如吃饭、睡觉、说话,但是其中吃饭的方式和说话的语言不同。试定义一个抽象类—人,其中包含这两种人的共同特征和行为,为人这个抽象类派生子类中国人和外国人,其中对他们不同的行为(吃饭、说话)进行实现。要求实现结果如下图所示。
提示:
用抽象类实现,凡是共同的东西,写在父类中,凡是新增的东西,写在各个子类中。会使用到super关键字,表示属性的成员变量一般用private修饰,
输出结果示例:(见图)
class People
{
private String name;
private String sex;
private int age;
void eat()
{
System.out.printf("使用");
}
void speak()
{
System.out.printf("说");
}
void sleep()
{
System.out.printf("睡觉");
}
}
class PeopleOne extends People
{
String name = '张三';
String sex = '男';
int age = 19;
String getname()
{ return name; }
String getsex()
{ return sex; }
int getage()
{ return age; }
void character()
{
System.out.println("礼貌性 有礼貌");
}
void use()
{
System.out.println(People.eat()+"筷子");
}
void language()
{
System.out.println(people.speak()+"中文");
}
}
class PeopleTwo extends People
{
String name = 'Lily';
String sex = '女';
int age = 20;
String getname()
{ return name; }
String getsex()
{ return sex; }
int getage()
{ return age; }
void character()
{
System.out.println("竞争性 有竞争性");
}
void use()
{
System.out.println(People.eat()+"刀叉");
}
void language()
{
System.out.println(people.speak()+"外文");
}
}
class Noname5
{
public static void main(String[] args)
{
System.out.println("姓名 "+PeopleOne.getname()+" 性别 "+PeopleOne.getsex()+" 年龄 "+PeopleOne.getage());
peopleone.character();
Peopleone.use();
peopleone.language();
people.sleep();
System.out.println("========================");
System.out.println("姓名 "+Peopletwo.getname()+" 性别 "+Peopletwo.getsex()+" 年龄 "+Peopletwo.getage());
peopletwo.character();
Peopletwo.use();
peopletwo.language();
people.sleep();
}
} 展开
展开全部
根据你的编写:
如在PeopleOne 在子类use()方法中调用父类的方法:super.eat(); 因为eat()本来就是打印一句话,而你在use()打印它,这样不行,只能直接调用。你想连同筷子一起打印不行,单独打印就OK。
在class Noname5 中因为PeopleOne 和PeopleTwo 都为非静态类帮不能直接调用,须先实例化然后再调用。
如:PeopleOne PO = new PeopleOne();
System.out.println(("姓名 "+PO.getname+"性别"+PO.getsex());
还有一个要点:你在给String类型赋值的时候 所赋的值不能用单引号,那是对字符的赋值,对字符串要用双引号。
讲了这么多希望我说得比较清楚,没有给你发修正过的代码,希望你自己思考
祝你学习进步!
如在PeopleOne 在子类use()方法中调用父类的方法:super.eat(); 因为eat()本来就是打印一句话,而你在use()打印它,这样不行,只能直接调用。你想连同筷子一起打印不行,单独打印就OK。
在class Noname5 中因为PeopleOne 和PeopleTwo 都为非静态类帮不能直接调用,须先实例化然后再调用。
如:PeopleOne PO = new PeopleOne();
System.out.println(("姓名 "+PO.getname+"性别"+PO.getsex());
还有一个要点:你在给String类型赋值的时候 所赋的值不能用单引号,那是对字符的赋值,对字符串要用双引号。
讲了这么多希望我说得比较清楚,没有给你发修正过的代码,希望你自己思考
祝你学习进步!
展开全部
题目中要求的是用抽象类
而且你对java语法的使用很多都有问题
改了很多
abstract class People
{
private String name;
private String sex;
private int age;
People(String name,String sex,int age)
{ this.name=name;
this.sex=sex;
this.age=age;
}
abstract public String eat();
abstract public String speak();
public String sleep()
{
return "睡觉";
}
public String getname()
{ return name; }
public String getsex()
{ return sex; }
public int getage()
{ return age; }
}
class PeopleOne extends People
{
PeopleOne(String name, String sex, int age) {
super(name, sex, age);
}
public String character()
{
return "礼貌性 有礼貌";
}
public String eat()
{
return "使用筷子";
}
public String speak()
{
return "说中文";
}
}
class PeopleTwo extends People
{
PeopleTwo(String name, String sex, int age) {
super(name, sex, age);
}
public String character()
{
return "竞争性 有竞争性";
}
public String eat()
{
return "使用刀叉";
}
public String speak()
{
return "说外文";
}
}
class Noname5
{
public static void main(String[] args)
{
PeopleOne Chinese=new PeopleOne("张三","男",19);
PeopleTwo Foreigner=new PeopleTwo("Lily","女",20);
System.out.println("姓名 "+Chinese.getname()+" 性别 "+Chinese.getsex()+" 年龄 "+Chinese.getage());
System.out.println(Chinese.character());
System.out.println(Chinese.eat());
System.out.println(Chinese.speak());
System.out.println(Chinese.sleep());
System.out.println("========================");
System.out.println("姓名 "+Foreigner.getname()+" 性别 "+Foreigner.getsex()+" 年龄 "+Foreigner.getage());
System.out.println(Foreigner.character());
System.out.println(Foreigner.eat());
System.out.println(Foreigner.speak());
System.out.println(Foreigner.sleep());
}
}
而且你对java语法的使用很多都有问题
改了很多
abstract class People
{
private String name;
private String sex;
private int age;
People(String name,String sex,int age)
{ this.name=name;
this.sex=sex;
this.age=age;
}
abstract public String eat();
abstract public String speak();
public String sleep()
{
return "睡觉";
}
public String getname()
{ return name; }
public String getsex()
{ return sex; }
public int getage()
{ return age; }
}
class PeopleOne extends People
{
PeopleOne(String name, String sex, int age) {
super(name, sex, age);
}
public String character()
{
return "礼貌性 有礼貌";
}
public String eat()
{
return "使用筷子";
}
public String speak()
{
return "说中文";
}
}
class PeopleTwo extends People
{
PeopleTwo(String name, String sex, int age) {
super(name, sex, age);
}
public String character()
{
return "竞争性 有竞争性";
}
public String eat()
{
return "使用刀叉";
}
public String speak()
{
return "说外文";
}
}
class Noname5
{
public static void main(String[] args)
{
PeopleOne Chinese=new PeopleOne("张三","男",19);
PeopleTwo Foreigner=new PeopleTwo("Lily","女",20);
System.out.println("姓名 "+Chinese.getname()+" 性别 "+Chinese.getsex()+" 年龄 "+Chinese.getage());
System.out.println(Chinese.character());
System.out.println(Chinese.eat());
System.out.println(Chinese.speak());
System.out.println(Chinese.sleep());
System.out.println("========================");
System.out.println("姓名 "+Foreigner.getname()+" 性别 "+Foreigner.getsex()+" 年龄 "+Foreigner.getage());
System.out.println(Foreigner.character());
System.out.println(Foreigner.eat());
System.out.println(Foreigner.speak());
System.out.println(Foreigner.sleep());
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询