• 课后作业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();
    }
    }

    截图:

     
  • 相关阅读:
    QT项目之创建.pri文件
    QT中使用pri子工程
    foreach
    Qt--解析Json
    C++构造函数的default和delete
    QVariantMap 和 QVariant
    __attribute__中constructor和destructor
    唯品会
    获取图片和下载到本地和名字和链接的获取
    python实现屏幕截图
  • 原文地址:https://www.cnblogs.com/chenpengmeng/p/4967623.html
Copyright © 2020-2023  润新知