《Java程序员面试秘笈》—— 面试题10 类继承的建模表示方法

    xiaoxiao2023-12-13  176

    本节书摘来异步社区《Java程序员面试秘笈》一书中的第1章,第1.10节,作者:常建功,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    面试题10 类继承的建模表示方法

    Java程序员面试秘笈根据图1.4的UML表示,选择一个正确的描述。

    (a)Box类是MyBox类的子类。

    (b)Box类是MyBox类的父类。

    (c)Box类和MyBox类是聚合关系。

    (d)Box类和MyBox类是一对多关系。

    考点:该面试题貌似简单,在实际的面试中回答正确的却并不是很多,其实只是考察求职者对类的继承的建模表示方法的掌握程度。

    出现频率:

    【面试题解析】Java中有两种机制来保证根据现有的类来构造新的类,那就是继承和聚合。例如,有一个盒子的类Box,开发者就可以根据类Box来构造各种细化的盒子类,因为所有的细化盒子类都是类Box的一种,这是一种继承的关系。

    在UML建模表示图中,继承使用一个空心的三角箭头来表示,该箭头的方向是由子类指向父类的,表明子类依赖于父类,如图1.5所示。

    在Java中,要从现有的类构造出新的类,需要在子类的定义中使用extends子句。值得注意的是,在Java中,子类只能扩展一种父类,子类将继承超类的成员。示例代码如下:

    //定义父类Boxclass Box {  //默认属性可以被继承  int high;  //private不能被继承  private static String location;  private int counter;  //protected可以被继承  protected boolean isFull;  //构造函数  Box() {    high = 20;    location = "Room";    counter = 1;    isFull = true;  }  public static void printLocation() {    System.out.println("Location:" + location);  }  private void printCounter() {    System.out.println("Number of boxs::" + counter);  }  public boolean isFull() {    return isFull;  }  public int getCounter() {    return counter;  }  public void doLoad() {    isFull = true;  }  public void doRemove() {    isFull = false;  }}//子类class MyBox extends Box {  private int length = 99;  private int colorNo = 45;  //覆盖父类属性  private int high=120;  public int getLength() {    return length;  }  public void printInfo() {    System.out.println("Length:" + getLength());    System.out.println("ColorNo:" + colorNo);    System.out.println("High:" + high);    System.out.println("isFull:" + isFull);    System.out.println("Counter:" + getCounter());    printLocation();  }}编写一个子类的测试类,其测试方法如下:

    public static void main(String[] args) {     MyBox mybox = new MyBox();     mybox.printInfo();  }运行结果如下:

    Length:99ColorNo:45High:120isFull:trueCounter:1Location:Room可见,子类继承了父类的成员。

    参考答案:(b)。

    本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)