新手写了一个简单的java程序,请高手看看,帮忙找错,给点学习建议!

来源:百度知道 编辑:UC知道 时间:2024/09/21 19:45:42
题目:
第四部分 抽象类
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; }
<

根据你的编写:
如在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; }