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 ```

    参考链接

  • 相关阅读:
    「读书感悟」三体
    「PLC」PLC基本编程
    利用一个Demo说明Castle+NHibernate的实现
    采用jquery实现简单的计算器
    Html+css+Jquery模拟电影院购票
    Jquery实现简单的导航单并且经常使用
    H5的video元素实现的Demo
    JQuery编写的定时器实现时钟
    Castle.net
    1056. 组合数的和(15)
  • 原文地址:https://www.cnblogs.com/hgnulb/p/10335206.html
Copyright © 2011-2022 走看看