前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >类的继承

类的继承

作者头像
不会写代码的杰尼
发布2022-05-19 12:38:50
7270
发布2022-05-19 12:38:50
举报
文章被收录于专栏:CSDN专栏CSDN专栏

类的继承

实验目的:掌握类的继承、抽象类的定义和使用、对象的向上转型。 实验内容:已知若干图形,求以该图形为底的锥体的体积。 实验要求:用面向抽象的思想实现。 实验步骤: 1、程序总体框架

在这里插入图片描述
在这里插入图片描述

2.在shape包中创建抽象类Shape,代码如下:

代码语言:javascript
复制
package shape;

public abstract class Shape {
	public abstract double getArea();		//建立一个抽象类求Shape面积

}

3、在centrun包中创建一个类Centrun,代码如下:

代码语言:javascript
复制
package centrun;

import shape.Shape;

public class Centrun {
	short S1=1;
	float F1=(float) 3.4;
	double height;
	Shape shape;				
//此处未实例化对象,知识点:对象的向上转型
	public Centrun(){
		super();
	}

	public Centrun(double height,Shape shape) {
		super();
		this.height=height;
		this.shape=shape;
	}
	
	public double getVolume(){
		return (1.0/3)*shape.getArea()*this.height;	
//求椎体的体积,getArea将圆的面积算法单独作为一个类(Circle.java),便于代码的复用;
	}
}

Centrun这个类为核心类,在之后的代码编写中可以不做更改,getVolume函数用来求椎体的体积,即利用抽象类getArea进行适应性计算。 4、创建一个包myshape,在其中先创建一个Circle类,代码如下:

代码语言:javascript
复制
package myshape;

import shape.Shape;

public class Circle extends Shape{
	//Circle是对Shape类的继承
	private double r;
	public Circle(){
		super();
	}
	
	public Circle(double r){
		super();
	//对于以上的代码实际在子类的构造方法中隐含了一个super()的语法,此句加不加效果一样
		this.r=r;
	}
	//取得R属性
	public double getR(){
		return r;
	}
	//设置R属性
	public void setR(double r){
		this.r=r;
	}

	@Override
	public double getArea() {
		// TODO 自动生成的方法存根
		return Math.PI*this.r*this.r;
		//代码的重写,求圆的面积,公式为:S=π*r^2
	}
}

Circle是对抽象类shape的继承(记得导入shape包),在Circle类中,利用对getArea函数代码的重写操作,具体实现了求圆的面积这一操作。【此处的具体实现应该放入该图形的具体面积求法。】

5、创建一个包Test,对以上三个包中的代码进行具体实现,代码如下:

在这里插入图片描述
在这里插入图片描述

导入myshape包,在main函数中通过向上转型,实例化shape包中的抽象类Shape,然后调用函数输出圆锥的体积。

6、在求出实验结果1,即调试好shape、myshape、centrun这三个包后,不再更改shape、centrun包,而是在myshape包下新建所需的类,如本次实验所需的三角形、矩形;

7、在myshape包下创建一个类Rectangular,代码如下:

代码语言:javascript
复制
package myshape;

import shape.Shape;

public class Rectangular extends Shape{			//继承shape
	private double width;
	private double height;
	
	public Rectangular(){
		super();
	}
	
	public Rectangular(double width,double height){
		super();
		this.width=width;
		this.height=height;
	}

	@Override
	public double getArea() {
		// TODO 自动生成的方法存根
		return width*height;
		//矩形面积等于宽乘以高
	}
}

8、在myshape包下创建一个类Triangle,需注意的是,求三角形的面积需要判断三角形的三边能否构成三角形(不能构成时返回0),代码如下:

代码语言:javascript
复制
package myshape;

import shape.Shape;

public class Triangle extends Shape{            
	    double a;
		double b;
		double c;
		double m;
		//空参构造函数
		public Triangle() {
			super();
		}
		
		public Triangle(double a, double b, double c) {
			super();
			this.a = a;
			this.b = b;
			this.c = c;
		}
		
		public double getA(){
			return a;
		}
		
		public double getB(){
			return b;
		}
		
		public double getC(){
			return c;
		}
	
		@Override
		public double getArea() {
			// TODO 自动生成的方法存根
			if(a+b>=c&&a+c>=b&&b+c<=a)
				return 0;
			else 
			{			
			double m=(a+b+c)/2;
			double s=m*(m-a)*(m-b)*(m-c);
			return Math.sqrt(s);
			}
		}
}

实验结果: 1、Test测试包最终代码:

代码语言:javascript
复制
package test;

import myshape.Circle;
import myshape.Rectangular;
import myshape.Triangle;
import centrun.Centrun;

public class Test {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Circle circle=new Circle(4.0);
		Centrun centrun=new Centrun(10,circle);	
		//向上转型,实例化shape
		System.out.println(centrun.getVolume());
		//输出圆锥的体积
		Rectangular rect=new Rectangular(6,8);
		centrun=new Centrun(10,rect);
		System.out.println(centrun.getVolume());
		//输出四棱锥的体积(底面为矩形)
		Triangle triangle=new Triangle(15,4,5);
		centrun=new Centrun(10,triangle);
		System.out.println(centrun.getVolume());
		//输出三棱锥的体积
	}
}

2、圆锥体积 测试数据:半径=4.0,高=10 测试结果:求得圆锥的体积约为168;

在这里插入图片描述
在这里插入图片描述

3、四棱锥的体积(底面为矩形) 测试数据:宽=6,长=8,高=10; 测试结果:求得棱锥的体积为160.

在这里插入图片描述
在这里插入图片描述

4、三棱锥的体积 (1) 测试数据:三边分别为:3 4 5,高为10。 测试结果:求得三棱锥的体积为20. (2) 测试数据:三边分别为:15 4 5,高为10。 测试结果:求得三棱锥的体积为0.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 类的继承
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档