2019-12-18 · 多态性练习(几何图形)

废话不多说,题来!

GeometriceObject 类:

package com.it18;
/*
 * 该类代表几何形状
 */
public class GeometriceObject {

    
    protected String color;
    protected double weight;
    
    
    public GeometriceObject() {
        super();
    }
    public GeometriceObject(String color, double weight) {
        this.color = color;
        this.weight = weight;
    }

    
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public double getWeight() {
        return weight;
    }
    public void setWeight(double weight) {
        this.weight = weight;
    }


    //不知道写声明,就先返回0.0
    public double findArea() {
        return 0.0;
    }
}

Circle 类:

package com.it18;
/*
 * 此类代表圆形
 */
public class Circle extends GeometriceObject{

    private double radius;
    
    
    public Circle() {
        super();
    }
    //父类中的属性,使用super();
    public Circle(double radius, String color, double weight) {
        super(color,weight);//回父类中找包含括号里面结构的构造器
        this.radius = radius;
    }
    
    public double getRadius() {
        return radius;
    }
    public void setRadius(double radius) {
        this.radius = radius;
    }
    
    public double findArea() {
        return Math.PI*radius*radius;
    }
}

MyRectangle 类:

package com.it18;
/*
 * 此类代表矩形
 */
public class MyRectangle extends GeometriceObject{

    private double width;
    private double height;
    
    
    public MyRectangle() {
        super();
    }
    //问题3:使用super(),回父类构造器中调用
    public MyRectangle(double width, double height, String color, double weight) {
        super(color, weight);
        this.width = width;
        this.height = height;
    }
    
    public double getWidth() {
        return width;
    }
    public void setWidth(double width) {
        this.width = width;
    }
    public double getHeight() {
        return height;
    }
    public void setHeight(double height) {
        this.height = height;
    }
    
    public double findArea() {
        return width*height;
    }
}

GeometriceTest 测试类:

package com.it18;

public class GeometriceTest {
    public static void main(String[] args) {
        //创建本类的对象,调用本类的方法
        GeometriceTest test = new GeometriceTest();
        //创建圆的对象
        Circle c1 = new Circle(1, "white", 1.0);
        test.displayGeometriceObject(c1);
        Circle c2 = new Circle(2, "white", 1.0);
        test.displayGeometriceObject(c2);
        
        boolean equalsArea = test.equalsArea(c1, c2);
        System.out.println("c1和c2的面积是否相等:" + equalsArea);
        
        /*
         * 矩形的方法和圆一样,自行练习
         */
    }
    
    public void displayGeometriceObject(GeometriceObject o) {//多态:GeometriceObject o = new Circle(...);
        System.out.println("面积为:" + o.findArea());
    }
    public boolean equalsArea(GeometriceObject o1, GeometriceObject o2) {
        return o1.findArea() == o2.findArea();
    }
}

总结:

该练习遇到的问题:

  1. 不熟悉子类调用父类的构造器。
  2. 遇到不明返回值的方法,不知道怎么办。
  3. 对多态性的理解不够,甚至题都有点看不懂。

加油吧...

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,841评论 1 32
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 5,022评论 0 2
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 4,780评论 0 4
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 4,938评论 0 5
  • 继承和多态 1. 继承的优缺点 优点:(1)子类可以灵活地改变父类中的已有方法;(2)能够最大限度的实现代码重用。...
    MinoyJet阅读 3,868评论 0 0