1、使用类与接口的知识完成如下要求:(1)定义一个接口CanFly,描述会飞的方法public void fly();(2)分别定义类飞机和鸟,实现CanFly接口。(3)定义一个测试类,测试飞

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();
	}
}

 说法不当之处还请大佬批评指正!!!

  • 13
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值