你好,我是悦创。

一、选择题

  1. A
  2. C
  3. D
  4. D
  5. D

二、简答题

多态:是具有表现多种形态的能力的特征。

子类转换成父类(向上转换):将一个父类的引用指向一个子类对象,称为向上转型,自动进行类型转换。

父类转换成子类(向下转换):将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型,此时必须进行强制类型转换。

不过我想多说一句无关的,我更喜欢类比,其实在 Python 函数,自定义函数就是多态,因为 Python 函数是可以接受任意类型的,所以在使用的时候需要添加上类型判断,这个很重要。避免 0day。既然说到这,就顺便提一下数据溢出相关的 Python:

Python 对 int 类型没有最大限制(相比之下, C++ 的 int 最大为 2147483647,超过这个数字会产生溢出),但是对 float 类型依然有精度限制。这些特点,除了在一些算法竞赛中要注意,在生产环境中也要时刻提防,避免因为对边界条件判断不清而造成 bug 甚至 0day(危重安全漏洞)。

三、编程题目

1. Triangle

/*
* @Author: clela
* @Date:   2020-04-06 15:08:20
* @Last Modified by:   clela
* @Last Modified time: 2020-04-06 15:12:12
* @公众号:AI悦创
*/
public class Triangle extends Shape {
    private int di;
    private int heigth;
    public Triangle(int x, int y, String color, int di, int heigth) {
        super(x, y, color);
        this.di=di;
        this.heigth=heigth;
    }

    public void draw() {
        System.out.println("画出图形"+getColor()+", 开始位置 X 轴="+getX()+",开始位置 Y 轴="+getY()+"底边="+di+"高="+heigth);
    }
}

2. Rectangle

/*
* @Author: clela
* @Date:   2020-04-06 15:08:20
* @Last Modified by:   clela
* @Last Modified time: 2020-04-06 15:14:04
* @公众号:AI悦创
*/
public class Rectangle extends Shape {
    private int width;
    private int height;
    public Rectangle(int x, int y, String color, int width, int height) {
        super(x, y, color);
        this.height=height;
        this.width=width;
    }

    public void draw() {
        System.out.println("画出图形"+getColor()+", 开始位置 X 轴="+getX()+",开始位置 Y 轴="+getY()+"宽度="+width+"长度="+height);
    }

    private double getWidth() {
        return width;
    }
    private void setWidth(int width) {
        this.width = width;
    }
    private double getHeight() {
        return height;
    }
    private void setHeight(int height) {
        this.height = height;
    }
}

3. Test

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add(new Line(10,20,"红色",150,309));
        list.add(new Rectangle(0,0,"sky blue",10,39));
        list.add(new Rectangle(0,0,"pink",6,5));
        for(Shape s:list){
            s.draw();
        }
    }
}
AI悦创·创造不同!
AI悦创 » Java 作业(2)

Leave a Reply