zoukankan      html  css  js  c++  java
  • Java真实笔试题一

    PS:昨天去笔试后,发现自己对于JavaSE的基础部分还是有些薄弱的地方,特将昨天自己不是太清楚的地方记录下来,巩固基础。

    子类继承父类静态方法的问题

    public class Study {
        public static void main(String[] args) {
            Super sup = new SubClass();
            sup.say();
            sup.a();
    
            SubClass sub = new SubClass();
            sub.say();
            sub.a();
        }
    }
    
    class Super {
        public static void say() {
            System.out.println("I am super");
        }
    
        public void a() {
            System.out.println("super a");
        }
    }
    
    class SubClass extends Super{
        public static void say() {
            System.out.println("I am sub");
        }
    
        @Override
        public void a() {
            System.out.println("sub a");
        }
    }

      题目就是问上面的输出结果,这里主要考察的就是子类对于父类静态方法是如何继承的。首先子类能够继承父类的静态方法,但是子类不能够重写父类的静态方法,这就意味着如果如果子类有一个和父类同名且方法签名相同的方法,那么此时子类会隐藏父类的该方法,我们知道多态的机制靠的就是子类重写父类的方法,然后用父类的引用指向子类的对象,用父类的引用调用子类的方法。此时,该静态方法只是被隐藏了,没有被重写,那么在该方法上就没有实现多态。(上面的代码是在IDEA里编写的,在编写的过程也能发现子类对父类的静态方法没有重写,没有提示加@Override注解)

      所以上面的输出是:

    I am super
    sub a
    I am sub
    sub 

    Java中类初始化的问题

     问:下面代码的输出结果?

    package com.yunche;
    
    /**
     * @ClassName: Study
     * @Description:
     * @author: yunche
     * @date: 2018/12/05
     */
    public class Study {
        public static void main(String[] args) {
            SubClass subClass = new SubClass();
        }
    }
    
    class Super {
        static{
            System.out.println("super:clinit()");
        }
    
       Super() {
           System.out.println("super:init()");
       }
    }
    
    class SubClass extends Super{
        static{
            System.out.println("SubClass:clinit()");
        }
    
        SubClass() {
            System.out.println("SubClass:init()");
        }
    }

      此题考查类的初始化顺序,先将父类的 clinit() 方法执行完,再执行子类的 clinit()方法,然后执行父类的 init() 方法,最后执行子类的 init() 方法。所以结果为:

    super:clinit()
    SubClass:clinit()
    super:init()
    SubClass:init()
  • 相关阅读:
    POJ 3268——Silver Cow Party——————【最短路、Dijkstra、反向建图】
    POJ 1797 ——Heavy Transportation——————【最短路、Dijkstra、最短边最大化】
    POJ 2253 ——Frogger——————【最短路、Dijkstra、最长边最小化】
    HDU 5505——GT and numbers——————【素数】
    int,long,long long的数据范围
    HDU 5501——The Highest Mark——————【贪心+dp】
    UVALive 4262——Trip Planning——————【Tarjan 求强连通分量个数】
    随手记
    工作流引擎资料/产品收集
    Vim 学习指南
  • 原文地址:https://www.cnblogs.com/yunche/p/10069205.html
Copyright © 2011-2022 走看看