zoukankan      html  css  js  c++  java
  • 【笔试题】Java 继承

    笔试题 Java 继承
    Question 1 Output of following Java Program?

    class Base {
        public void show() {
            System.out.println("Base::show() called");
        }
    }
    
    class Derived extends Base {
        public void show() {
            System.out.println("Derived::show() called");
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Base b = new Derived();
            b.show();
        }
    }
    

    A. Derived::show() called
    B. Base::show() called

    参考答案

    ``` A ```

    Question 2

    class Base {
        final public void show() {
            System.out.println("Base::show() called");
        }
    }
    
    class Derived extends Base {
        public void show() {
            System.out.println("Derived::show() called");
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Base b = new Derived();
            b.show();
        }
    }
    

    A. Base::show() called
    B. Derived::show() called
    C. Compiler Error
    D. Runtime Error

    参考答案

    ``` C ```
    解析:Java 中 final 修饰方法不允许被子类重写,但是可以被子类继承,final 不能修饰构造方法。

    Question 3

    class Base {
        public static void show() {
            System.out.println("Base::show() called");
        }
    }
    
    class Derived extends Base {
        public static void show() {
            System.out.println("Derived::show() called");
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Base b = new Derived();
            b.show();
        }
    }
    

    A. Base::show() called
    B. Derived::show() called
    C. Compiler Error

    参考答案

    ``` A ```
    解析:Java 中静态属性和静态方法可以被继承,但是没有被重写 (overwrite) 而是被隐藏。

    Question 4 **Which of the following is true about inheritance in Java?

    1. Private methods are final.
    2. Protected members are accessible within a package and inherited classes outside the package.
    3. Protected methods are final.
    4. We cannot override private methods.**

    A. 1, 2 and 4
    B. Only 1 and 2
    C. 1, 2 and 3
    D. 2, 3 and 4

    参考答案

    ``` A ```

    Question 5 Output of following Java program?

    class Base {
        public void Print() {
            System.out.println("Base");
        }
    }
    
    class Derived extends Base {
        public void Print() {
            System.out.println("Derived");
        }
    }
    
    public class Main {
        private static void DoPrint(Base o) {
            o.Print();
        }
    
        public static void main(String[] args) {
            Base x = new Base();
            Base y = new Derived();
            Derived z = new Derived();
            DoPrint(x);
            DoPrint(y);
            DoPrint(z);
        }
    }
    

    A. Base
       Derived
       Derived
    B. Base
       Base
       Derived
    C. Base
       Derived
       Base
    D. Compiler Error

    参考答案

    ``` A ```

    Question 6 Predict the output of following program. Note that fun() is public in base and private in derived.

    class Base {
        public void foo() {
            System.out.println("Base");
        }
    }
    
    class Derived extends Base {
        private void foo() {
            System.out.println("Derived");
        }
    }
    
    public class Main {
        public static void main(String args[]) {
            Base b = new Derived();
            b.foo();
        }
    }
    

    A. Base
    B. Derived
    C. Compiler Error
    D. Runtime Error

    参考答案

    ``` C ```
    参考解析
    重写要遵循**"两同两小一大"**原则: **1) 两同:** * 1.1) 方法名相同 * 1.2) 参数列表相同

    2) 两小:

    • 2.1) 子类方法的返回值类型小于或等于父类的
      • 2.1.1) void 时,必须相同
      • 2.1.2) 基本类型时,必须相同
      • 2.1.3) 引用类型时,小于或等于
    • 2.2) 子类方法抛出的异常小于或等于父类的(异常之后)

    3) 一大:

    • 3.1) 子类方法的访问权限大于或等于父类的(访问控制修饰符后)

    Question 7 **Which of the following is true about inheritance in Java.

    1. In Java all classes inherit from the Object class directly or indirectly. The Object class is root of all classes.
    2. Multiple inheritance is not allowed in Java.
    3. Unlike C++, there is nothing like type of inheritance in Java where we can specify whether the inheritance is protected, public or private.**

    A. 1, 2 and 3
    B. 1 and 2
    C. 2 and 3
    D. 1 and 3

    参考答案

    ``` A ```

    Question 8 Predict the output of following Java Program?

    class Grandparent {
        public void Print() {
            System.out.println("Grandparent's Print()");
        }
    }
    
    class Parent extends Grandparent {
        public void Print() {
            System.out.println("Parent's Print()");
        }
    }
    
    class Child extends Parent {
        public void Print() {
            super.super.Print();
            System.out.println("Child's Print()");
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Child c = new Child();
            c.Print();
        }
    }
    

    A. Compiler Error in super.super.Print()
    B. Grandparent's Print()
       Parent's Print()
       Child's Print()
    C. Runtime Error

    参考答案

    ``` A ```
    解决方案
    Java 代码
    class Grandparent {
        public void Print() {
            System.out.println("Grandparent's Print()");
        }
    }
    
    class Parent extends Grandparent {
        public void Print() {
            super.Print();
            System.out.println("Parent's Print()");
        }
    }
    
    class Child extends Parent {
        public void Print() {
            super.Print();
            System.out.println("Child's Print()");
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Child c = new Child();
            c.Print();
        }
    }
    

    运行结果

    Grandparent's Print()
    Parent's Print()
    Child's Print()
    

    Question 9

    final class Complex {
    
        private final double re;
        private final double im;
    
        public Complex(double re, double im) {
            this.re = re;
            this.im = im;
        }
    
        public String toString() {
            return "(" + re + " + " + im + "i)";
        }
    }
    
    class Main {
        public static void main(String args[]) {
            Complex c = new Complex(10, 15);
            System.out.println("Complex number is " + c);
        }
    }
    

    A. Complex number is (10.0 + 15.0i)
    B. Compiler Error
    C. Complex number is SOME_GARBAGE
    D. Complex number is Complex@8e2fb5(Here 8e2fb5 is hash code of c)

    参考答案

    ``` A ```

    参考链接

  • 相关阅读:
    编程小技巧之 Linux 文本处理命令(二)
    基金投资经验总结
    基金投资需要掌握的几个基本概念
    动目标指示MTI和动目标检测MTD
    雷达信号处理基础-快时间维和慢时间维
    信号处理第二篇——接着谈正弦信号
    毫米波雷达第一篇——测距篇
    信号处理第一篇——浅谈正弦信号
    python学习总结篇(3)——类
    python中的if __name__ == '__main__' 如何正确理解?
  • 原文地址:https://www.cnblogs.com/hgnulb/p/10335206.html
Copyright © 2011-2022 走看看