新手写了一个简单的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();
}
}
展开
 我来答
luxu123456
2009-04-20 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:118万
展开全部
根据你的编写:
如在PeopleOne 在子类use()方法中调用父类的方法:super.eat(); 因为eat()本来就是打印一句话,而你在use()打印它,这样不行,只能直接调用。你想连同筷子一起打印不行,单独打印就OK。
在class Noname5 中因为PeopleOne 和PeopleTwo 都为非静态类帮不能直接调用,须先实例化然后再调用。
如:PeopleOne PO = new PeopleOne();
System.out.println(("姓名 "+PO.getname+"性别"+PO.getsex());
还有一个要点:你在给String类型赋值的时候 所赋的值不能用单引号,那是对字符的赋值,对字符串要用双引号。
讲了这么多希望我说得比较清楚,没有给你发修正过的代码,希望你自己思考
祝你学习进步!
巨广臻幸0W
2009-04-20 · TA获得超过685个赞
知道小有建树答主
回答量:402
采纳率:0%
帮助的人:0
展开全部
题目中要求的是用抽象类
而且你对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());
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式