zoukankan      html  css  js  c++  java
  • 06-动手动脑

    1.

    请按照以下步骤进行技术探险:

    (1)使用javap –c命令反汇编ExplorationJDKSource.class;

    (2)阅读字节码指令,弄明白println()那条语句到底调用了什么?

    (3)依据第(2)得到的结论,使用Eclipse打开JDK源码,查看真正被执行的代码是什么

    激动啊,我终于发现了……

    前面示例中,main方法实际上调用的是:public void println(Object x),这一方法内部调用了String类的valueOf方法。

    valueOf方法内部又调用Object.toString方法:public String toString() { return getClass().getName() +"@" + Integer.toHexString(hashCode()); } hashCode方法是本地方法,

    由JVM设计者实现: public native int hashCode();

    2.在子类中,若要调用父类中被覆盖的方法,可以使用super关键字。

    class Parent 
    {
        public void ASD()
         {
                System.out.println("Parent ");
              }
    }
    class Child extends Parent 
    {
        public void ASD()
         {
            super.ASD();
            System.out.println("Child ");
          }
    }
    public class Test {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
                        Child c = new Child();
                        c.ASD();
        }
    }
    

      Java“方法覆盖”的语法规则

    (1)覆盖方法的允许访问范围不能小于原方法。

    (2)覆盖方法所抛出的异常不能比原方法更多。

    (3)声明为final方法不允许覆盖。 例如,Object的getClass()方法不能覆盖。

    (4)不能覆盖静态方法。

    3.

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

    m=d;

    d=m;

    d=(Dog)m;

    d=c;

    c=(Cat)m;

    第二个和第三个会出错

    结果截图:

    原因:父类不可直接给子类赋值,子类可以直接给父类赋值,同为子类不能相互赋值,父类可强制类型转换给子类赋值

    4.运行以下测试代码

    1. 左边的程序运行结果是什么?

    2. 你如何解释会得到这样的输出?

    3. 计算机是不会出错的,之所以得 到这样的运行结果也是有原因的,

    那么从这些运行结果中,你能总 结出Java的哪些语法特性?

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

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

  • 相关阅读:
    如何实现CSS限制字数,超出部份显示省略号
    html禁止手机页面放大缩小
    jQuery 获取屏幕高度、宽度
    谷歌api 二维码生成 实例
    java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA
    eclipse安装阿里开发规范
    tomcat下配置http和https
    linux安装redis
    修改java配置文件
    Linux下安装Mysql
  • 原文地址:https://www.cnblogs.com/zhpdqs/p/7813467.html
Copyright © 2011-2022 走看看