飞机大战-java基础小程序(初学项目)04

 

Shoot射击游戏第四天:
1)将小敌机数组、大敌机数组、小蜜蜂数组组合为FlyingObject数组,并测试
2)在6个对象类中重写step()方法
3)画窗口:-----在World类中
  3.1)import JFrame+JPanel
  3.2)设计World类继承JPanel
  3.3)将main中代码Ctrl C+V过来
  3.4)将frame.setSize()括号中改为400,700

下载我之前上传的文件修改,或者直接复制我写好的.

画窗口-----swing相关的内容(现在swing已经被淘汰了)
      -----射击游戏中与swing窗口相关的内容统统不要求掌握

 

1.向上造型:
  1)超类型的引用指向派生类的对象
  2)能点出来什么,看引用的类型-------这是规定,不需要理解


   超类                 派生类
FlyingObject o1 = new Airplane();
FlyingObject o2 = new BigAirplane();
FlyingObject o3 = new Bee();
FlyingObject o4 = new Hero();
FlyingObject o5 = new Sky();
FlyingObject o6 = new Bullet(100,200);
o1/o2/o3/o4/o5/o6. 只能点出FlyingObject中的

 超类            派生类
Person p1 = new Student();
Person p2 = new Teacher();
Person p3 = new Doctor();
p1/p2/p3. 只能点出Person中的

 超类          派生类
Animal o = new Tiger();
o. 只能点出Animal中的

//动物是动物
Animal o = new Animal();
//老虎是老虎
Tiger o = new Tiger();
//老虎是动物
Animal o = new Tiger();
//动物是老虎----语义不通
Tiger o = new Animal(); //编译错误

class Animal{ //动物类
}
class Tiger extends Animal{ //老虎类
}

 

 

2.方法的重写(Override):重新写、覆盖
  1)发生在父子类中,方法名相同,参数列表相同,方法体不同
  2)重写方法被调用时,看对象的类型---这是规定,不需要理解
  3)重写遵循"两同两小一大"原则:-----------了解
    3.1)两同:
        3.1.1)方法名相同
    3.1.2)参数列表相同
    3.2)两小:
        3.2.1)派生类方法的返回值类型小于或等于超类方法的
          1)void时,必须相同
          2)基本类型时,必须相同
          3)引用类型时,小于或等于
    3.2.2)派生类方法抛出的异常小于或等于超类方法的-----API时讲
    3.3)一大:
        3.3.1)派生类方法的访问权限大于或等于超类方法的
3.重写与重载的区别:-----(面试题,回答时只答1.1和2.1)
  1)重写:
    1.1)发生在父子类中,方法名相同,参数列表相同,方法体不同
    1.2)遵循"运行期绑定",看对象的类型来调用方法
  2)重载:
    2.1)发生在同一类中,方法名相同,参数列表不同,方法体不同
    2.2)遵循"编译期绑定",看参数/引用的类型来绑定方法

 

今天的代码比较简单只改变了World的内容而且不需要大家记忆复制就行

在写代码前大家要做的是把图放到我们的包里面,不要放到外面就得不到图形了

 

 

 

 

 

 

 

图可以在我上传的资源里面获得(可以先把下载文件导入到eclipse中在复制粘贴图片)

 

package cn;

import javax.swing.JFrame;
import javax.swing.JPanel;



public class World extends JPanel {

	private Hero hero = new Hero();
	private Sky sky = new Sky();
	private FlyingObject[] enemies;// 0

	private Bullet[] bullet = {};

	public void action() {
		BufferedImage img = Images.sky;
		enemies = new FlyingObject[5];
		enemies[0] = new Airplane();
		enemies[1] = new Airplane();
		enemies[2] = new BigAirplane();
		enemies[3] = new BigAirplane();
		enemies[4] = new Bee();
		for (int x = 0; x < enemies.length; x++) {
			FlyingObject f = enemies[x];
			System.out.println(f.x + "," + f.y);
			f.say();
		}
	}


	public static void main(String[] args) {

		JFrame frame = new JFrame();
		World world = new World();
		frame.add(world);

		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(400, 700);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);

		world.action();

	}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

大家可以得到这样一个图

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值