接口类的一大波问题,关于回调问题

qq_38721679 2017-06-11 02:56:41
TyresStandrad接口用于声明17寸轮胎的速度级别及名称,即其包括常量size、方法turnWheel()和方法getTyresName()
设计一个Car类,该类有一个useTyres(TyresStandrad tyres)方法,该方法的参数tyres是TyresStandrad接口类型,该参数可以存放任何实现TyresStandrad接口的类的对象的引用,并回调类重写的接口方法显示轮胎转速和轮胎名称
定义Michelin和Dunlop两个实现了接口TyresStandrad的类
在测试类中获取不同品牌使用17寸轮胎的汽车类的对象,显示其轮胎转速和轮胎名称



interface TyresStandrad
{
final int size=17;
int rank;
String name;

String turnWheel();
String TyresName();
}

class Michelin implements TyresStandrad
{
public String turnWheel()
{
return "This tyre's rank is 5";
}

public String TyresName()
{
return ",and it's nama is Michelin ";
}
}

class Dunlop implements TyresStandrad
{
public String turnWheel()
{
return "This tyre's rank is 4";
}

public String TyresName()
{
return ",and it's nama is Dunlop ";
}
}

class Car implements TyresStandrad
{
public String useTyres(TyresStandrad tyres)
{
return tyres.turnWheel()+ryres.TyresName();
}
}

class ShowTyres
{
public static void main(String[] args)
{
Car a=new Car();
a.tyres=new Dunlop();
System.out.println(a.tyres.useTyres());
}
}

TyresStandrad 类中的rank和name属性实在实现接口类中用super赋值还是直接在重写的方法里return 他的属性(就像我程序里写的那样),不过直接return的话就好像没必要在TyresStandrad 类中定义rank和name了吧,但是我这样写是报错的,这一点不太明白,希望大神帮我理理思路

还有就算 “该类有一个useTyres(TyresStandrad tyres)方法,该方法的参数tyres是TyresStandrad接口类型,该参数可以存放任何实现TyresStandrad接口的类的对象的引用,并回调类重写的接口方法显示轮胎转速和轮胎名称”这句话里说的定义一个方法回调类重写的接口方法是什么意思?
class Car implements TyresStandrad
{
public String useTyres(TyresStandrad tyres)
{
return tyres.turnWheel()+ryres.TyresName();
}
}

class ShowTyres
{
public static void main(String[] args)
{
Car a=new Car();
a.tyres=new Dunlop();
System.out.println(a.tyres.useTyres());
}
}
是这种意思吗?
回调这里学的不太好,大神可以留下点经验吗?

...全文
222 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuawawa 2017-06-11
  • 打赏
  • 举报
回复
另外请检查Car中String useTyres(TyresStandrad tyres)方法中的拼写错误
zhuawawa 2017-06-11
  • 打赏
  • 举报
回复
关于问题: TyresStandrad 类中的rank和name属性实在实现接口类中用super赋值还是直接在重写的方法里return 他的属性(就像我程序里写的那样),不过直接return的话就好像没必要在TyresStandrad 类中定义rank和name了吧,但是我这样写是报错的,这一点不太明白,希望大神帮我理理思路 答:接口是抽象方法和常量值的定义的集合。TyresStandrad接口中必须显式初始化rank和name的值。倘若rank和name值是可变的name可在其实现TyresStandrad接口的实现类中定义属性给rank和name赋值。 参考如下: TyresStandrad接口: interface TyresStandrad { int size = 17; String turnWheel(); String TyresName(); } 实现TyresStandrad接口的Dunlop类: class Dunlop implements TyresStandrad { private int rank = 4; private String name = "Dunlop"; @Override public String turnWheel() { return "This tyre's rank is " + rank; } @Override public String TyresName() { return ",and it's nama is " + name + " "; } } 另外Car类若要实现TyresStandrad接口必须重写TyresStandrad接口中定义的:String turnWheel()和String TyresName()方法。 就现在的程序代码来看Car类中就定义了一个String useTyres(TyresStandrad tyres)方法,该方法中只是形参用到了一个实现TyresStandrad 接口的一个类对象。 Car类: class Car{ public String useTyres(TyresStandrad tyres) { return tyres.turnWheel() + tyres.TyresName(); } } 倘若Car类要实现TyresStandrad接口,则为如下写法: class Car implements TyresStandrad { public String useTyres(TyresStandrad tyres) { return tyres.turnWheel() + tyres.TyresName(); } @Override public String turnWheel() { return null;//此处省略。具体方法实现,可根据自己的需求而定 } @Override public String TyresName() { return null;//此处省略。具体方法实现,可根据自己的需求而定 } } 最后,main()方法中的有错误。具体的就不详细解释,请参见如下代码: public class ShowTyres { public static void main(String[] args) { Car a = new Car(); String str = a.useTyres(new Dunlop()); System.out.println(str); } } 注:a.tyres=new Dunlop();//在Car类中并没有找到tyres属性,只看到tyres是String useTyres(TyresStandrad tyres)方法的形参。剩下的自己思考吧

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧