实验三 类的继承和多态性

1.(1)编写一个接口ShapePara,要求: 接口中的方法: int getArea():获得图形的面积。int getCircumference():获得图形的周长

(2)编写一个圆类Circle,要求:圆类Circle实现接口ShapePara。

该类包含有成员变量:

radius:public 修饰的double类型radius,表示圆的半径。

x:private修饰的double型变量x,表示圆心的横坐标。

y:protected修饰的double型变量y,表示圆心的纵坐标。

包含的方法有:

Circle(double radius) 有参构造方法。以形参表中的参数初始化半径,圆心为坐标原点。 double getRadius():获取半径为方法的返回值。void setCenter(double x, double y):利用形参表中的参数设置类Circle的圆心坐标。void setRadius(double radius):利用形参表中的参数设置类Circle的radius域。

2.定义图形类Shape,该类中有获得面积的方法getArea();定义长方形类Rect,该类是Shape的子类,类中有矩形长和宽的变量double a,double b,设置长和宽的方法setWidth()、setHeight(),使用getArea()求矩形面积;利用getArea方法实现题1中圆面积的求解。

package zhongqiuzuoye;

public interface ShapePara {

    public  double getArea();

    public  double getCircumference();

}
package zhongqiuzuoye;

public class Circle implements ShapePara {

    public double radius;
    private double x;
    public double getRadius() {
        return radius;
    }
    public void setRadius(double radius) {
        this.radius = radius;
    }

    public double getX() {
        return x;
    }

    public void setX(double x) {
        this.x = x;
    }

    public double getY() {
        return y;
    }

    public void setY(double y) {
        this.y = y;
    }

    protected double y;

    public   Circle(double radius) {

    }

    void setCenter(double x, double y)
    {
        this.x=x;
        this.y=y;
    }

    public double getArea() {

        return 3.14*radius*radius;
    }

    @Override
    public double getCircumference() {
        // TODO 自动生成的方法存根
        return 0;
    }

}
package zhongqiuzuoye;

public class Shape {

    public void getArea()
    {

    }
}
package zhongqiuzuoye;

public class Rect extends Shape{

    private double width;
    private double 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;
    }

    Rect(double width,double height)         //带有两个参数的构造方法,用于将width和height属性初化;
    {
        this.width=width;
        this.height=height;
    }

    public void getArea()                    //求矩形面积的方法
    {
        System.out.println("矩形的面积为:"+width*height);
    }

}
时间: 2024-12-24 21:13:11

实验三 类的继承和多态性的相关文章

实验五 类的继承、派生和多态(2)

一.验证性实验 1. 在多层继承中,派生类中出现与基类同名成员时,通过对象名.成员名的方式,访问的成员什么? 对象名.成员名:派生类对象 2. 通过基类指针访问派生类对象时,基类中成员函数有无关键字virtual,访问的成员分别是什么? 基类指针:有关键字时访问派生类,无关键字访问基类对象 二.编程练习 1.设计并实现一个机器宠物类MachinePets #include<iostream> #include<string> using namespace std; class M

实验4 类的继承、派生和多态(1)

实验目的 1. 理解类的继承和派生机制 2. 掌握派生类的定义和使用 3. 理解和掌握派生类成员的标识和访问中同名覆盖原则.二元作用域分辨符和虚基类的用法 4. 掌握派生类构造函数和析构函数的定义及调用次序 5. 理解运算符重载的目的,掌握运算符重载函数的编写方法 实验准备 1. 类的继承和派生 引入继承和派生机制的目的 基本概念:继承.派生.基类.直接基类.间接基类 .派生类 语法 派生类定义的语法格式(单重继承和多重继承) 派生类构造函数及其初始化列表书写形式 派生类成员的标识与访问 同名覆

c++实验四 类的继承、派生和多态

实验目的 1. 理解类的继承和派生机制 2. 掌握派生类的定义和使用 3. 理解和掌握派生类成员的标识和访问中同名覆盖原则.二元作用域分辨符和虚基类的用法 4. 掌握派生类构造函数和析构函数的定义及调用次序 5. 理解运算符重载的目的,掌握运算符重载函数的编写方法 实验内容 一.ElectricCar类 #ifndef BATTERY_H #define BATTERY_H class Battery { public: Battery(int nb = 70); int showbattery

实验三-类的实现

part1: void Graph::draw() { int i,a,b,t; a=size; b=size; t=1; while(a--) { for(i=0;i<b-1;i++) cout<<' '; for(i=0;i<t;i++) cout<<symbol; for(i=0;i<b-1;i++) cout<<' '; cout<<endl; b=b-1; t=t+2; } } part3: #ifndef FRACTION_H

实验五--类的继承派生多态二次练习

实验目的 1. 理解运行时多态 2. 掌握虚函数和抽象类 实验准备 1. 概念 多态,运行时多态 虚函数, 纯虚函数, 抽象类 2. 语法和应用 虚函数的定义和使用纯虚函数.抽象类的定义和使用 实验内容 设计并实现一个机器宠物类MachinePets. 每个机器宠物有如下信息:昵称(nickname) 每个机器宠物有如下成员函数: 带参数的构造函数MachinePets(const string s) ,为机器宠物初始化昵称. 纯虚函数string talk()为机器宠物派生类提供宠物叫声的统一

实验6 类的继承和多态

四.实验结论 1.实验内容1 Base.h #ifndef Base_h #define Base_h using namespace std; class Base { public: Base (int m0 ,int n0):m(m0),n(n0){} int add (){return m+n;}; int getm() const {return m;}; int getn() const {return n;}; private: int m, n; }; #endif /*Base

实验四 类的继承、派生和多态(1)

一.实验内容 1.车辆基本信息管理 基于Car类派生出ElectricCar类.派生类ElectricCar中新增数据成员Battery类对象. #ifndef BATTERY_H #define BATTERY_H class Battery { public: Battery(int batterySize0=70); int getSize(); private: int batterySize; }; #endif battery.h #ifndef CAR_H #define CAR_

类的继承和多态性-编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 getLegs(),设置动物名称的方法 setKind(),获得动物名称的方法 getKind(),获得动物数量的方法 getCount()。定义Fish类,是Animal类的子类,

编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 getLegs(),设置动物名称的方法 setKind(),获得动物名称的方法 getKind(),获得动物数量的方法 getCount().定义Fish类,是Animal类的子类,统计鱼的数量 count,获得鱼数量的方法 getCount().定义Tiger类,是Animal类的子类,统计老虎的

实验三 类与对象(zxt)

//以下为课上的实现虚数相加的内容,以及我的疑惑(懵逼) 这个代码存在问题,只能运行整数不能运行浮点数,以下为2.0版本 这回的又有一些问题,这个源代码是老师ppt上的,main函数中的部分是我写的.但是由于我想既能进行整数和浮点数的加法,所以我设置为了double类型.由此导致我只能调用double add( ),int add( )完全没用,如果不把m,n,p,q都设置为double类型,比如:把m,p设置为整型值,说明你已经知道m,p为整型值,这样的话输入的范围就有了限制,我又不想这样,是