zoukankan      html  css  js  c++  java
  • 动手动脑以及实验验证

    一、怎样判断对象是否可以转换?

    可以使用instanceof运算符判断一个对象是否可以转换为指定的类型:

    程序截图:

    结果截图:

    二、类型转换

    实验截图:

    结论:子类可直接赋给基类(“基类变量=子类对象”);基类的引用类型要传递给子类必须通过强制转换(“子类变量=(子类名)基类对象”);子类之间不可以进行转换。

    三、变态类

    程序截图:

    结果截图:

    原因及结论:

        当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。 这个特性实际上就是面向对象“多态”特性的具体表现。

        如果子类与父类有相同的字段,则子类中的字段会代替或隐藏父类的字段,子类方法中访问的是子类中的字段(而不是父类中的字段)。如果子类方法确实想访问父类中被隐藏的同名字段,可以用super关键字来访问它。 如果子类被当作父类使用,则通过子类访问的字段是父类的!

    四、关于异常

    程序源代码:

    import javax.swing.*;

    class AboutException {
    public static void main(String[] a)
    {
    int i=1, j=0, k;
    k=i/j;


    try
    {

    k = i/j; // Causes division-by-zero exception
    //throw new Exception("Hello.Exception!");
    }

    catch ( ArithmeticException e)
    {
    System.out.println("被0除. "+ e.getMessage());
    }

    catch (Exception e)
    {
    if (e instanceof ArithmeticException)
    System.out.println("被0除");
    else
    {
    System.out.println(e.getMessage());

    }
    }


    finally
    {
    JOptionPane.showConfirmDialog(null,"OK");
    }

    }
    }

    结果截图:

     (第7行中主函数Zero出现异常)

    五、CatchWho.java

    程序截图:

    结果截图:

    六、EmbededFinally.java

    程序代码:

    package homework;

    public class EmbededFinally {

    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    int result;

    try {

    System.out.println("in Level 1");


    try {

    System.out.println("in Level 2");
    // result=100/0; //Level 2

    try {

    System.out.println("in Level 3");

    result=100/0; //Level 3

    }

    catch (Exception e) {

    System.out.println("Level 3:" + e.getClass().toString());

    }


    finally {

    System.out.println("In Level 3 finally");

    }


    // result=100/0; //Level 2


    }

    catch (Exception e) {

    System.out.println("Level 2:" + e.getClass().toString());

    }
    finally {

    System.out.println("In Level 2 finally");

    }

    // result = 100 / 0; //level 1

    }

    catch (Exception e) {

    System.out.println("Level 1:" + e.getClass().toString());

    }

    finally {

    System.out.println("In Level 1 finally");

    }

    }

    }

    结果截图:

    特别注意:当有多层嵌套的finally时,异常在不同的层次抛出 ,在不同的位置抛出,可能会导致不同的finally语句块执行顺序。

    七、finally语句块一定会执行吗?

    程序截图:

    结果截图:

    结论:finally语句不一定执行。

  • 相关阅读:
    [手游新项目历程]-36- error: stray ‘357’ in program
    广告学(一)
    VMware的Unity模式
    poj3709
    poj1849
    bzoj2007
    bzoj3209
    bzoj2466,poj1222
    bzoj1016
    bzoj2186
  • 原文地址:https://www.cnblogs.com/mengqimoli/p/4965230.html
Copyright © 2011-2022 走看看