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

123 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 ​

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

	}

}