1、使用类与接口的知识完成如下要求:
(1)定义一个接口CanFly,描述会飞的方法public void fly();
(2)分别定义类飞机和鸟,实现CanFly接口。
(3)定义一个测试类,测试飞机和鸟。测试类中定义一个makeFly()方法,让会飞的事物飞起来。
(4)然后在main方法中创建飞机对象和鸟对象,并在main方法中调用makeFly()方法,让飞机和鸟起飞。
一:利用引用类型(接口)作为形参传值
做题步骤:定义接口,定义实现类,定义测试类,初步定义 makeFly 方法,创建实现类对象,创建测试类对象调用 makeFly() 方法,将 CanFly 接口作为 makeFly() 方法的形参,将实现类对象传入,利用传入的对象去调用相应的 fly() 方法
package com.xx.test;
//接口
public interface CanFly {
public abstract void fly();//飞的方式
}
//实现类:飞机
class Plane implements CanFly{
@Override
public void fly() {//飞的方式
// TODO Auto-generated method stub
System.out.println("飞机靠燃油飞行");
}
}
//实现类:鸟
class Bird implements CanFly{
@Override
public void fly() {//飞的方式
// TODO Auto-generated method stub
System.out.println("鸟靠翅膀飞行");
}
}
//测试类
class Test{
public void makeFly(CanFly f){//参数设为接口类型,只能传实现类对象
f.fly();
System.out.println("起飞");
}
public static void main(String[] args) {
Plane p = new Plane();//创建实现类对象
Bird b = new Bird();
Test t = new Test();//创建Test对象调用makeFly方法
t.makeFly(p);
t.makeFly(b);
}
}
二:利用向上转型/引用类型提升
做题步骤:定义接口,定义实现类,定义测试类,定义 makeFly 方法,利用接口引用指向实现类对象(向上转型),创建测试类对象,以便调用 makeFly() 方法,用实现类对象直接调用 fly() 方法
package com.xx.test;
//接口
public interface CanFly {
public abstract void fly();//飞的方式
}
//实现类:飞机
class Plane implements CanFly{
@Override
public void fly() {//飞的方式
// TODO Auto-generated method stub
System.out.println("飞机靠燃油飞行");
}
}
//实现类:鸟
class Bird implements CanFly{
@Override
public void fly() {//飞的方式
// TODO Auto-generated method stub
System.out.println("鸟靠翅膀飞行");
}
}
//测试类
class Test{
public void makeFly(){
System.out.println("起飞");
}
public static void main(String[] args) {
CanFly p = new Plane();
CanFly b = new Bird();
Test t = new Test();//创建Test对象调用makeFly方法
p.fly();
t.makeFly();
b.fly();
t.makeFly();
}
}
说法不当之处还请大佬批评指正!!!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)