• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
羽月科技
博客园    首页    新随笔    联系   管理    订阅  订阅

第七周课程总结&实验报告(五)

实验四 类的继承

实验目的

理解抽象类与接口的使用;

了解包的作用,掌握包的设计方法。

实验要求

掌握使用抽象类的方法。

掌握使用系统接口的技术和创建自定义接口的方法。

了解 Java 系统包的结构。

掌握创建自定义包的方法。

实验内容

(一)抽象类的使用

设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。
注:三角形面积s=sqrt(p(p-a)(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2
2.编程技巧

(1)抽象类定义的方法在具体类要实现;

(2)使用抽象类的引用变量可引用子类的对象;

(3)通过父类引用子类对象,通过该引用访问对象方法时实际用的是子类的方法。可将所有对象存入到父类定义的数组中。

实验代码:

package work;

public abstract class shape {
    abstract double area();
}

抽象

package work;

public class triangle extends shape {
    private double a;
    private double b;
    private double c;
    private double p;
    public triangle(double a,double b,double c) {
    	this.a=a;
    	this.b=b;
    	this.c=c;
    }
	double area() {
		p = (a+b+c)/2;
		return Math.sqrt(p*(p-a)*(p-b)*(p-c));
	}
	public double getA() {
		return a;
	}
	public void setA(double a) {
		this.a = a;
	}
	public double getB() {
		return b;
	}
	public void setB(double b) {
		this.b = b;
	}
	public double getC() {
		return c;
	}
	public void setC(double c) {
		this.c = c;
	}
	public double getP() {
		return p;
	}
	public void setP(double p) {
		this.p = p;
	}

}

三角形

package work;

public class rectangle extends shape {
    private double x;
    private double y;
    public rectangle(double x,double y) {
    	this.x=x;
    	this.y=y;
    }

	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;
	}

	double area() {
		return x*y;
	}

}

矩形

package work;

public class circular extends shape {
    private double r;
    public circular(double r) {
    	this.r=r;
    }

	public double getR() {
		return r;
	}

	public void setR(double r) {
		this.r = r;
	}

	double area() {
		return 3.14*r*r;
	}

}

圆形

最终实验结果:

实验过程出现了各种各样的错误。

未保存父类导致报错;

没有出现语法错误,但输出面积全为0,无法输入图形长度数据,检查后发现缺少以下代码导致数据无法被接收:

public triangle(double a,double b,double c) {
    	this.a=a;
    	this.b=b;
    	this.c=c;
    }
    public rectangle(double x,double y) {
    	this.x=x;
    	this.y=y;
    }
    public circular(double r) {
    	this.r=r;
    }

未解决问题前强行运行导致的报错。

实验内容:

(二)使用接口技术

1定义接口Shape,其中包括一个方法size(),设计“直线”、“圆”、类实现Shape接口。分别创建一个“直线”、“圆”对象,将各类图形的大小输出。

编程技巧
(1) 接口中定义的方法在实现接口的具体类中要重写实现;

(2) 利用接口类型的变量可引用实现该接口的类创建的对象。

实验代码:

package work;

public interface shape2 {
    double size();
}

接口

package work;

public class line implements shape2 {
   private double line;
   
   line(double line){
   this.line = line;
}
	public double size() {

		return line;
	}

}

线段

package work;

public class yuan implements shape2 {

	private double r;
	yuan(double r){
		this.r=r;
	}
	public double size() {
		return r*r*Math.PI;
	}

}

圆形

个人认为本题难度小于第一题,网上查找资料发现数学派(3.1415926535)可以直接利用Math.PI,这样得出的结果更精确。(第一题使用的为3.14)

运行结果截图:

本周所学总结:

1、abstract,抽象类关键词,实际应用-----模板设计;

2、接口的实际应用为制定标准;

3、接口--interface;

4、有时出现莫名报错是因为父类未保存。

posted @ 2019-10-11 12:04  羽月Tech  阅读(250)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3