俺昨天考试遇到一题!面向对象概念不是很清晰,发上来大家帮我看看!
定义一个体育活动类(Sports)作为基类,它有一个进行活动的方法play(方法名命名规范:J2EE方向:小写字母开头 . NET方向:大写字母开头)。
足球(Football)和篮球(Bascketball)都是体育活动类的衍生类。
请在测试类(Test)中编写一个方法howToPlay(Sports sp),该方法要求传递一个Sports类型的参数。该方法的作用是:
1. 当传入的实例类型为Football时,控制台上应打印:足球是用脚踢的!
2. 当传入的实例类型为Bascketball时,控制台上应打印:篮球是用手打的!
在main方法中调用howToPlay()验证你的代码是对的。
本题目要求严格使用面向对象中的继承、多态概念。
俺的答案
//运动类
public class Sports{
public void play(){
System.out.println ("运动");
}
}
class Football extends Sports{
public void play(){
System.out.println ("足球是用脚踢的");
}
}
class Bascketball extends Sports{
public void play(){
System.out.println ("篮球是用手打的");
}
}
//测试类
class Test{
public void howToPlay(Sports sp){
sp.play();
}
public static void main(String[]args){
Test t=new Test();
t.howToPlay(new Bascketball());
}
}
------解决方案--------------------
写的很好
------解决方案--------------------
- Java code
import static mytools.Print.*;class Sports{ void play(){ print("super play"); }}class Football extends Sports{ void play(){ print("足球是用脚踢的!"); }}class Bascketball extends Sports{ void play(){ print("篮球是用手打的!"); }}public class Test2{ static void howToPlay(Sports sp){ sp.play(); } public static void main(String[] args){ howToPlay(new Football()); howToPlay(new Bascketball()); }}
------解决方案--------------------
基本正确,但最后将超类改成抽象类,如:
public class Sports{
public abstract void play();
}
------解决方案--------------------
没大懂你的意图
- Java code
public class TestSports { public void howToPlay(Sports sp){ sp.play(); } public static void main(String[] args){ Sports football=new FootBall(); Sports basketball=new Basketball(); TestSports test=new TestSports(); test.howToPlay(football); test.howToPlay(basketball); }} class Sports { public void play(){ System.out.println("sports!"); }} class FootBall extends Sports{ public void play(){ System.out.println("kicking a goal!"); } } class Basketball extends Sports{ public void play(){ System.out.println("give a 3-p shot!"); } }
------解决方案--------------------
嘿嘿,一天登录一次(或者100次)就可以增加10分可用分的。