zoukankan      html  css  js  c++  java
  • 课后作业PPT 7

    1.PPT  P9 

    现在有三个类:

    class Mammal{}//父

    class Dog extends Mammal {}//子

    class Cat extends Mammal{}//子

    针对每个类定义三个变量并进行初始化

    Mammal m=null ;

    Dog d=new Dog();

    Cat c=new Cat();

    下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么?

    m=d;

    d=m;

    d=(Dog)m;

    d=c;

    c=(Cat)m;

      先进行自我判断,得出结论后,运行TestCast.java实例代码,看看你的判断是否正确.

    1)事前判断

         m=d是可以的,表示我定义了一个Mammal类型的引用,指向新建的 Dog类 型的对象,即父类的引用指向了自己的子类的对象。由于 Dog是继承自它的父类Mammal,所以Mammal类型的引用是可以指向Cat类型的对象的。。但是d=m不行,因为不能把父类对象引用赋给子类对象引用变量,除非进行强制转化,也就是向下转型(父类转子类)d=(Dog)m。

         d=c也会引起编译错误(把d=m注释掉),父类型的引用必须指向子类的对象,即指向谁才能转换成谁,则因为父类引用指向的是Cat类的对象,而要强制转换成Dog类,这是不可能的。

    2)截图:

    2.PPT  P11

    1)程序的运行结果为:

    2)结果原因:第一个直接输出父类parent的值,第二个直接输出子类child的值,第三个是把子类的值赋给父类,从而输出结果为子类的语句,第四句是把parent的value++,但是输出的依然是子类的语句,引用的依然是子类的myvalue,所以输出值依然是200,第五个是把parent强制类型转化为child,之后再进行++运算,值也跟着变化,输出结果为201。

    3)总结:  当父类和子类具有相同的方法时,调用那个方法是根据对象自己的真实类型所决定的。

    2.PPT  P24

    截图:

    3.PPT P27

    不会,因为源程序中有系统退出语句,在catch到错误之后,运行完相应的语句之后,System.exit(0);,使得系统直接退出,不再执行finally中的语句。

    4.

    动手动脑:

    Ø编写一个程序,此程序在运行时要求用户输入一个  整数,代表某门课的考试成绩,程序接着给出“不及格”、“及格”、“中”、“良”、“优”的结论。
    Ø要求程序必须具备足够的健壮性,不管用户输入什  么样的内容,都不会崩溃。
    程序代码:

    package chengjipaiming;
    import java.util.Scanner;
    class score
    {
    int score;
    void get()
    {

    try{
    Scanner a=new Scanner(System.in);
    System.out.print("输入成绩(0~100):");
    score=a.nextInt();
    if(score<0||score>100)
    {
    System.out.println("输入的数超出定义的范围");
    get();
    }
    }
    catch(Exception e)
    {
    System.out.println("输入有误,核对后输入;");
    get();
    }
    }
    void show()
    {

    if(score>=0&&score<=60)System.out.print(" 不及格");
    if(score>60&&score<=70)System.out.print(" 及格");
    if(score>70&&score<=80)System.out.print(" 中");
    if(score>80&&score<=90)System.out.print(" 良");
    if(score>90&&score<=100)System.out.print(" 优");
    }
    }
    public class Range {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    score c=new score();
    c.get();
    c.show();
    }
    }

    截图:

     
  • 相关阅读:
    fastreport 中文汉字换行
    Delphi调用自身onchange事件,如提示缺少声明object时,不能调用,用此方法!
    delphi 截取某个字符之前的字段,,如 1234567-9,要分别得到
    delphi 四舍五入取整函数
    SQLServer2008不允许保存更改错误解决办法_不允许保存更改、不允许修改表解决_百度经验
    关于APP的架构实现!微博和知乎中的 feed 流是如何实现的?
    win2003没有OLE DB Provider for SQLServer驱动,可安装sqlserver2000或者安装MDAC2.6,适用于winxp、win2003
    SQLServer2000安装失败,[ODBC 驱动程序管理器]未发现数据源,详细信息请查看日志文件 sql2000 [Microsoft][ODBC 驱动程序管理器] 未发现数据源,参见sqlstp.org,直接退出
    sql server2008R2 密钥
    CentOS7安装memcached
  • 原文地址:https://www.cnblogs.com/chenpengmeng/p/4967623.html
Copyright © 2011-2022 走看看