看了两周的Java 核心技术 卷一 是时候将所看所学内化整合一番,本文将结合RoboCop rescue中的一些内容对我这断时间的学习做个小小小小结。
本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:
- 继承
- 接口
- 泛型
简单的继承
``` Java
inheritance/Student.java
package inheritance;
import java.util.*;
//超类为所有学生
public class Student {
//超类中含有三个实例
private String name;
private int grade;
private int rank;
public Student (String name, int grade, int rank)
{
this.name = name;
this.grade = grade;
this.rank = rank;
}
public String getname()
{
return name;
}
public int getgrade()
{
return grade;
}
public int get rank()
{
return rank;
}
public String toString()
{
return getClass.getName() + "[name="+name+",grade="+grade+"rank="+rank+"]";
}
}
package inheritance;
//由超类继承而来的子类 middleStu
public class middleStu extends Student {
private boolean IsthreeGood;//定义一个超类中没有的实例域
public middleStu (String name, int rank, int grade)
{
//用super关键字调用超类的构造函数
super (name, grade, rank);
IsthreeGood = false;
}
public void set ThreeGood()
{
IsthreeGood = true;
}
public String toString()
{
return super.toString()+"[ThreeGood?:"+IsthreeGood+"]";
}
}
接口
//示例为贪吃蛇的部分代码
//一个实现了Runnable接口的PaintThread类
private class PaintThread implements Runnable{
private boolean running = true;
在Runnable接口中有一个方法 run 需要在类中具体实现
public void run()
{
while(running)
{
repaint();
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
public void gameOver()
{
running = false;
}
}
题外话 五子棋和贪吃蛇的判断代码
int continueCount=1;//连续棋子的个数
for(int x=xIndex-1;x>=0;x--){//横向向左寻找
Color c=isBack ? Color.black : Color.white;
if(getChess(x,yIndex,c)!=null){
continueCount++;
}else
break;
}
//横向向右寻找
Color c=isBack ? Color.black : Color.white;
if(getChess(x,yIndex,c)!=null){
continueCount++;
}else
break;
}
if(continueCount>=5){
//判断记录数大于等于五,即表示此方获胜
return true;
}else
continueCount=1; //左右方向找完后必须将计数器归零
上下方向,两个对角方向的算法与上类似不再赘述
运动时随键盘敲入 转向
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
switch(key) {
case KeyEvent.VK_LEFT :
// 当按键为左的时候,只要前进方向不是右,即可转向
if(head.dir != Dir.R)
head.dir = Dir.L;
break;
...
...
}
连续运动
private void move() {
addToHead(); //头部增加一个结点
deleteFromTail();//尾部同时释放一个结点以达到前进的效果
checkDead();
}
泛型
Java中的泛型可以同C++中的template模板相类比
可以有 泛型类, 泛型方法
Public class Pair <T>
{
private T first;
private T second;
public Pair(){ first = null;second = null;}
...
}
之后我们可以定义String类型的Pair
class Test
{
public static Pair<String> getmin(String[] a)
{...}
通过对类型变量T设置限定,可以将T限制为实现某个接口
如:
public static <T extends Comparable> T min(T[]a)//T实现了Comparable 接口
{ ...}