java基础day09

                                   多态
同一事物在不同的条件之下,展现的意识形态不一样

程序中的多态

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

猜你喜欢

转载自blog.csdn.net/Shi_Yuan_Csdn/article/details/81434924
今日推荐