多态
同一事物在不同的条件之下,展现的意识形态不一样
程序中的多态
1) 具有继承关系
2) 子类必须重写父类的方法
3) 子类对象赋给父类、父类的引用指向子类、(里氏替换原则)
4) 父类调用方法—透明的调用了子类的方法
简述多态的概念,子类和父类之间转换是遵循的规则。
多态:是具有表现多种形态的能力的特征。专业说法:同一个实现接口,使用不同的实例而执行不同的操作。
子类转换成父类(向上转换)时的规则:
将一个父类的引用指向一个子类对象,称为向上转型,自动进行类型转换。
此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法。
此时通过父类引用变量无法调用子类特有的方法。
父类到子类的转换(向下转型)
将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型,此时必须进行强制类型转换
案例
编码创建一个打印机类Printer,定义抽象方法print();创建两个子类,即针式打印机类DotMatrixPrinter和喷墨打印机类InkpetPrinter,并在各自类中重写方法print(),编写测试类实现两种打印机;再添加一个激光打印机子类LaserPrinter,重写方法print(),修改测试类实现该打印机打印。
//打印机类
public abstract class Printer {
public Printer(){
}
public abstract void print();
}
//针式打印机
public class DotMatrixPrinter extends Printer {
@Override
public void print() {
// TODO Auto-generated method stub
System.out.println("针式打印机");
}
}
//喷墨打印机
public class InkpetPrinter extends Printer{
@Override
public void print() {
// TODO Auto-generated method stub
System.out.println("喷墨打印机");
}
}
//激光打印机
public class LaserPrinter extends Printer{
@Override
public void print() {
// TODO Auto-generated method stub
System.out.println("激光打印机");
}
}
public class Test {
public static void main(String[] args) {
Printer dmp= new DotMatrixPrinter();
Printer ip = new InkpetPrinter();
Printer lp= new LaserPrinter();
dmp.print();
ip.print();
lp.print();
}
}