阅读以下说明和Java程序代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 在下面的Java程序代码中,类SalesTicket能够完成打印票据正文的功能,类 HeadDecorator与FootDecorator分别能够完成打印票据的台

admin2008-05-15  32

问题 阅读以下说明和Java程序代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
   在下面的Java程序代码中,类SalesTicket能够完成打印票据正文的功能,类 HeadDecorator与FootDecorator分别能够完成打印票据的台头和脚注的功能。
   已知该程序运行后的输出结果如下所示,请填补该程序代码中的空缺。
   这是票据的台头!
   这是票据正文!
   -------------------
   这是票据的脚注!
   这是票据的台头!
   这是票据的脚注!
【tava程序代码】
    public class SalesTicket {
           public void printTicket()  {
                  System. out. println ( "这是票据正文 ! ");
           }
    }
   public class Decorator extends SalesTicket{
           SalesTicket ticket;
          public Decorator(SalesTicket t) {
                  ticket = t;
           }
          public void printTicket(){
                  if(ticket != null)
                         ticket.printTicket();
           }
    public class HeadDecorator extends Decorator{
          public HeadDecorator(SalesTicket t)  {
                (1)  
           }
          public void printTicket()  {
                  System. out.println("这是票据的台头! ");
                  super.printTicket();
           }
   }
   public class FootDecorator extends Decorator{
          public FootDecorator(SalesTicket t)  {
                       (2);
          }
         public void printTicket()  {
               super, printTicket ();
               System. out.println ("这是票据的脚注!");
         }
   }
   public class Main {
         public static void main(String[] args)  {
               T = new HeadDecorator( (3));
               T=(4);
               System.out.println("------------------------------------");
               T = new FootDecorator((5));
               T.printTicket ();
         }
   }

选项

答案(1)super(t) (2)super(t) (3)new FootDecorator(new SalesTicket()) (4)printTicket() (5)new HeadDecorator(null)

解析 本题中的类HeadDecorator和FootDecorator都继承了Decortator类,因此在构造函数中需要对Decorator类进行初始化,所以空(1)和(2)处应该为super(t)。类Main中空(3)和(4)处程序代码的输出为“这是票据的台头!这是票据正文!这是票据的脚注!”,由于T是一个headDecorator类的实例,因此空(4)处一定是printTicket方法的调用,类headDecorator将输出“这是票据的台头!”后调用其父类的printTicket方法,而仅仅只有FootDecorator类可以输出“这是票据的脚注!”,因此,当前父类的具体实例对象应该为FootDecorator的实例,所以空(3)处应该为new(FootDecorator(new SalesTicket))。空(5)同空(3)原理相同,但由于不需要输出票据的正文,因此在构造HeadDecorator对象的时候其参数为null即可。
转载请注明原文地址:https://kaotiyun.com/show/UsjZ777K
0

最新回复(0)