zoukankan      html  css  js  c++  java
  • CS 61B Lab5

    其实我不太确定题目是否是这个意思,我就按照我的理解来答题,欢迎来讨论。

    part one    

    a b c d 答案都在以下代码中

    分析:array的情况和variable情况是一样的,除了代码中array 的cast有点点不一样。。。在compile过程中,array之间相互assign看的是static type,type一致或者是子类assign给了父类或者父类cast成子类之后assign给子类,这三种情况是可以通过compile time的。但是在run time过程中,看的是dynamic type,必须要一致,才能run。所以在d中最后,Dog type 的 twodogs 指向了 Teddy type,如此一来,在最后cast过后,就既能通过compile time,又能run起来了。

    package lab5;
    
    public class Dog{
        protected int legs;
        protected String voice;
        protected String name;
        Dog(){
            legs = 4;
            voice = "wang";
            name = "dog";
        }
    /**************************************************************/
        public static void main(String[] arg){
            Dog onedog;
            Teddy oneTed = new Teddy();
            onedog = oneTed;
    //        oneTed = onedog;    compile error
            oneTed = (Teddy)onedog;
            
            onedog = new Dog();
    //        oneTed = (Teddy)onedog;         runtime error
            
            
    /**************************************************************/        
            
            Dog[] Twodogs;
            Teddy[] TwoTeddy=new Teddy[2];
            
    
            TwoTeddy[0] = new Teddy();
            TwoTeddy[1] = new Teddy();
            
            Twodogs = TwoTeddy;
    //        TwoTeddy = Twodogs;//compile error;
            TwoTeddy = (Teddy[])Twodogs;
            
            Twodogs = new Dog[2];
    //        TwoTeddy = (Teddy[])Twodogs;        runtime error
            
    /**************************************************************/
            Twodogs = new Teddy[2];
            Twodogs = TwoTeddy;
    //        TwoTeddy = Twodogs;  compile error
            TwoTeddy = (Teddy[])Twodogs; // there is no run error or compile error
                    
        }
    }

     

    Part Two

    (a) java will compile the result

    package lab5;
    
    public interface Animals {
         public void Shout();
    }
    
    
    
    package lab5;
    
    public class Dog{
        protected int legs;
        protected String voice;
        protected String name;
        Dog(){
            legs = 4;
            voice = "wang";
            name = "dog";
        }
        public void Shout(){
            System.out.println(voice);
        }
    }

    (b)NO

    (c)NO

      (d) Yes

    Part Three

    (a)Yes, there is no difference.

      (bc)  the situation is like this below. 

    Part Four

    (a) call the subclass method

    (b) run time error

    (c)课上讲过的方法 用super调用superclass method

  • 相关阅读:
    Lucence_Curd
    Lucence
    SpringMvc文件上传
    SpringMvc接收参数
    出现No qualifying bean of type [com.*.*.dao.InfoDao] found for :错误
    内连接、左外连接、右外连接、交叉连接区别
    html基础
    Java基础阶段综合练习
    java基础MySQL
    java基础IO删除文件夹文件
  • 原文地址:https://www.cnblogs.com/developerchen/p/7201790.html
Copyright © 2011-2022 走看看