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

时间: 2024-10-29 08:54:08

CS 61B Lab5的相关文章

CS 61B homewok8

测试结果: part one public static LinkedQueue mergeSortedQueues(LinkedQueue q1, LinkedQueue q2) { // Replace the following line with your solution. LinkedQueue mergedQueue = new LinkedQueue(); int flag = 0; Object q1item=0; Object q2item=0; try{ while((!q

CS 61B lab10

part one parent() public TreeNode parent() throws InvalidNodeException { // REPLACE THE FOLLOWING LINE WITH YOUR SOLUTION TO PART I. if(!this.valid){ throw new InvalidNodeException(); } if(this.parent==null) return new SibTreeNode(); return this.pare

CS 61B lab11

测试结果: private BinaryTreeNode findHelper(Comparable key, BinaryTreeNode node) { // Replace the following line with your solution. BinaryTreeNode movingnode = node; while(movingnode!=null){ if(key.compareTo((Comparable)(movingnode.entry.key))>0){ movin

CS 61B Project1

先上两张结果测试图,这次的project就如作业一开始所说,真的非常time-consuming,要早点做...先放个坑,下午来填.

(转)Awesome Courses

Awesome Courses  Introduction There is a lot of hidden treasure lying within university pages scattered across the internet. This list is an attempt to bring to light those awesome courses which make their high-quality material i.e. assignments, lect

CS文件类头注释

1.修改unity生成CS文件的模板(模板位置:Unity\Editor\Data\Resources\ScriptTemplates 文件名:81-C# Script-NewBehaviourScript.cs) 本人将模板修改为如下图(红框内的内容) 备注:在"#"之间的为可替换的参数 2.修改模板可替换参数,在工程项目Asset文件夹在创建Editor文件 在文件夹下添加AddFileHeadComment.cs文件 内容如下 参数内容根据个人需求修改

CS 和 BS 的区别和优缺点

bs是浏览器(browser)和服务器(server) cs是静态客户端程序(client)和服务器(server) 区别在于,虽然同样是通过一个程序连接到服务器进行网络通讯,但是bs结构的,客户端运行在浏览器里,比如你看百度,就是通过浏览器.还有一些bs结构的应用,比如中国电信,以及一些电子商务平台.用bs结构的好处是,不必专门开发一个客户端界面,可用asp,php,jsp等比较快速开发web应用的程序开发. cs结构的,要做一个客户端.网络游戏基本上大多是cs结构,比如你玩传奇,要专门开个传

微软SQLHelper.cs类 中文版

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Xml; using System.Collections; namespace LiuYanBanT { public class SqlHelper

AssemblyInfo.cs文件详解

一.前言 .net工程的Properties文件夹下自动生成一个名为AssemblyInfo.cs的文件,一般情况下我们很少直接改动该文件.但我们实际上通过另一个形式操作该文件.那就是通过在鼠标右键点击项目的属性进入“应用程序”->“程序集信息”,然后修改信息. 二.作用 通过特性(Attribute)来设置程序集(dll文件)的常规信息,供查看或作为配置信息供程序内部使用. 三.详解 // 程序集标题 [assembly:AssemblyTitle("程序集标题")] // 程