什么是多态:父类引用指向子类对象
1、多态的前提:
a、必须得类与类之间存在关系,可以继承、实现
b、必须得重写父类的方法
2、多态的好处:大提高代码的可扩展性
对于多态的理解,只能说刚刚入门,还需后面的大量练习和继续深入学习才能真正融会贯通
做了一个小小的案例来夯实一下多态、封装、继承,
因为简单案例,所以没有拆分,全写一个类中:
package tetris;
//block:方块
public class Block {
void deformation() { //deformation:变形
System.out.println("变形");
}
}
// 0-一字型,1-田字型,2-L字形,3-z字形
class BK_yzx extends Block{
void deformation() {
System.out.println("一字形在变形");
}
}
class BK_tzs extends Block{
void deformation() {
System.out.println("田字形在变形");
}
}
class BK_lzx extends Block{
void deformation() {
System.out.println("L字形在变形");
}
}
class BK_zzx extends Block{
void deformation() {
System.out.println("z字形在变形");
}
}
封装的一个简单工具类:
package tetris;
public class Utils { // 工具类
void deformation(Block b) {
b.deformation();
}
}
最后,执行函数:
package tetris;
import java.util.Random;
public class Excute { // 执行
public static void main(String[] args) {
for (int i = 0; i < 20; i++) {
Random r = new Random();
int s = r.nextInt(4);
Block b = null; // 定义一个父类引用
switch (s) { // 0-一字型,1-田字型,2-L字形,3-z字形
case 0:
b=new BK_yzx();
b.deformation();
break;
case 1:
b=new BK_tzs();
b.deformation();
break;
case 2:
b=new BK_lzx();
b.deformation();
break;
case 3:
b=new BK_zzx();
b.deformation();
break;
}
}
}
}
最后,放上结果,凑和看吧:
如果有不正确的定义或者代码,还请各位大大不悋赐教!!!