2)能点出来什么,看引用的类型
package oo.day03;
//格子类
public class Cell {
int row; //行号
int col; //列号
Cell(){
this(0,0); //调用构造方法
}
Cell(int n){
this(n,n); //调用构造方法
}
Cell(int row,int col){
this.row = row;
this.col = col;
}
void drop(){ //下落1格
row++;
}
void moveLeft(int n){ //左移n格
col-=n;
}
String getCellInfo(){ //获取行号和列号
return row+","+col;
}
void drop(int n){ //下落n格
row+=n;
}
void moveLeft(){ //左移1格
col--;
}
}
package oo.day03;
//四格拼板
public class Tetromino {
Cell[] cells; //格子数组
Tetromino(){
cells = new Cell[4]; //创建Cell数组对象
}
void drop(){
for(int i=0;i
package oo.day03;
//T型
public class T extends Tetromino {
T(){
this(0,0);
}
T(int row,int col){
super(); //默认--调用父类的无参构造方法
super.cells[0] = new Cell(row,col); //创建Cell对象
super.cells[1] = new Cell(row,col+1);
super.cells[2] = new Cell(row,col+2);
super.cells[3] = new Cell(row+1,col+1);
}
}
package oo.day03;
//J型
public class J extends Tetromino {
J(){
this(0,0);
}
J(int row,int col){
super();
cells[0] = new Cell(row,col);
cells[1] = new Cell(row+1,col);
cells[2] = new Cell(row+2,col-1);
cells[3] = new Cell(row+2,col);
}
}
package oo.day03;
//T型与J型的测试类
public class TJTest {
public static void main(String[] args) {
Tetromino o1 = new T(2,5); //向上造型
printWall(o1); //先造型后传值
J o2 = new J(1,4);
printWall(o2); //传值的同时造型
}
//打墙+打T形
public static void printWall(Tetromino t){
//效率低、扩展性好
for(int i=0;i<20;i++){
for(int j=0;j<10;j++){
boolean flag = false; //1.假设打-
for(int k=0;k
package oo.day03;
//向上造型的演示
public class UpDemo {
public static void main(String[] args) {
Eoo o1 = new Eoo();
o1.e = 1;
o1.show();
//o1.f = 2; //编译错误,父不能访问子
Foo o2 = new Foo();
o2.f = 1;
o2.test();
o2.e = 2; //正确,子可以访问父的
o2.show();
Eoo o3 = new Foo(); //向上造型
o3.e = 1;
o3.show();
//o3.f = 2; //编译错误,能点出来什么,看引用的类型
}
}
class Eoo{
int e;
void show(){}
}
class Foo extends Eoo{
int f;
void test(){}
}