第七周作业&实验报告5
实验四 类的继承
实验目的
理解抽象类与接口的使用;
了解包的作用,掌握包的设计方法。
实验要求
掌握使用抽象类的方法。
掌握使用系统接口的技术和创建自定义接口的方法。
了解 Java 系统包的结构。
掌握创建自定义包的方法。
实验内容
(一)抽象类的使用
设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。
注:三角形面积s=sqrt(p(p-a)(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2
2.编程技巧
(1) 抽象类定义的方法在具体类要实现;
(2) 使用抽象类的引用变量可引用子类的对象;
(3) 通过父类引用子类对象,通过该引用访问对象方法时实际用的是子类的方法。可将所有对象存入到父类定义的数组中。
package Zuoye4;
abstract class shapes {
public abstract double print();
}
class Triangle extends shapes {
private double a;
private double b;
private double c;
public Triangle(double a,double b,double c){
this.a=a;
this.b=b;
this.c=c;
}
public double print() {
double p=(a+b+c)/2;
return Math.sqrt(p*(p-a)*(p-b)*(p-c));
}
}
class Rectangle extends shapes {
private double w;
private double h;
public Rectangle(double w, double h){
this.h=h;
this.w=w;
}
public double print() {
return w*h;
}
}
class Circular extends shapes {
double r;
public Circular(double r){
this.r=r;
}
public double print() {
return r*r*Math.PI;
}
}
public class Tuxing{
public static void main(String[] args){
shapes Triangle=new Triangle(3,4,5);
shapes Rectangle=new Rectangle(4,3);
shapes Circular=new Circular(5);
System.out.println("三角形的面积: "+Triangle.print());
System.out.println("矩形的面积: "+Rectangle.print());
System.out.println("圆的面积: "+Circular.print());
}
}

(二)使用接口技术
1定义接口Shape,其中包括一个方法size(),设计“直线”、“圆”、类实现Shape接口。分别创建一个“直线”、“圆”对象,将各类图形的大小输出。
编程技巧
(1) 接口中定义的方法在实现接口的具体类中要重写实现;
(2) 利用接口类型的变量可引用实现该接口的类创建的对象。
package Zuoye4;
import java.util.Scanner;
interface Shapes{
public double size();
}
class spot implements Shapes{
private double x1,x2,y1,y2;
public spot(double x1,double x2,double y1,double y2) {
this.x1=x1;
this.x2=x2;
this.y1=y1;
this.y2=y2;
}
public double size() {
return Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
}
class Circular implements Shapes{
private double reidus;
public Circular(double reidus) {
this.reidus=reidus;
}
public double size() {
return Math.PI*this.reidus*this.reidus;
}
}
public class Tuxing{
public static void main(String args[]) {
Scanner spot=new Scanner(System.in);
System.out.println("请输入两点的坐标");
double x1=spot.nextDouble();
double y1=spot.nextDouble();
double x2=spot.nextDouble();
double y2=spot.nextDouble();
spot line=new spot(x1,y1,x2,y2);
System.out.println("直线的大小为:"+line.size());
Scanner c=new Scanner(System.in);
System.out.println("请输入圆的半径");
double reidus=c.nextDouble();
Circular circle=new Circular(reidus);
System.out.println("圆的大小为:"+circle.size());
return;
}
}

学习总结
(1)抽象类与接口的应用。
抽象类的实际应用-------模板设计(abstract)
接口的实际应用-------制定标准(interface)
(2)Object类
tostring方法
equals方法
(3)异常
1,数组超出绑定异常:ArrayIndexOutOfBoundsException.
2,数字格式化异常:NumberFormatException.
3,算术异常:ArithmeticException.
try{ //有可能出现异常的语句
}catch(异常类 异常对象){ //编写异常的处理语句
}finally{
一定会运行到的程序代码
}
4.异常类的继承结构
在JAVA中所有捕获范围小的异常必须放在捕获大的异常之前,否则程序在编译时会出现错误提示。
(4)关键字throws
public 返回值类型 方法名称(参数列表.....)throws 异常类{ }
第七周作业&实验报告5的更多相关文章
- 第七周总结&实验报告5
这一周的课程内容比较难,而且比较不容易理解,所有学习的很吃力,现在接触的知识越来越多,也越来越难了,还是要多对照书本来进行学习! 这周主要学的有: 一.抽象类 1.Java中可以创建一种类专门用来当作 ...
- 第六周作业&实验报告四
一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆 ...
- 2018-2019-1 20189221 《Linux内核原理与分析》第七周作业
2018-2019-1 20189221 <Linux内核原理与分析>第七周作业 实验六 分析Linux内核创建一个新进程的过程 代码分析 task_struct: struct task ...
- 2017-2018-1 20179205《Linux内核原理与设计》第七周作业
<Linux内核原理与设计>第七周作业 视频学习及操作分析 创建一个新进程在内核中的执行过程 fork.vfork和clone三个系统调用都可以创建一个新进程,而且都是通过调用do_for ...
- 2019-2020-1 20199329《Linux内核原理与分析》第七周作业
<Linux内核原理与分析>第七周作业 一.本周内容概述: 对Linux系统如何创建一个新进程进行追踪 分析Linux内核创建一个新进程的过程 二.本周学习内容: 1.学习进程的描述 操作 ...
- 2020-2021-1 20209307《Linux内核原理与分析》第七周作业
这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第七周作业> 这个作业的目标 & ...
- 2017-2018-1 我爱学Java 第六七周 作业
团队六七周作业 完善版需求规格说明书 制定团队编码规范 数据库设计 后端架构设计 TODOList 参考资料 完善版需求规格说明书 <需求规格说明书>初稿不足之处: 1.开发工具写错 2. ...
- 2017-2018-1 JAVA实验站 第六、七周作业
2017-2018-1 JAVA实验站 第六.七周作业 详情请见团队博客
- 2017-2018-1 JaWorld 第六、七周作业
2017-2018-1 JaWorld 第六.七周作业 修改需求规格说明书 上次的<需求规格说明书>初稿有哪些不足? 王译潇同学回答: 1. 引言和目的性考虑的不是很周全. 2. ...
随机推荐
- promise,await,async小论
Promise: Promise为了解决异步回调地狱而生的,其解决方法就是链式调用promise.then()或promise.all(); Promise有两个参数,resolve和reject,第 ...
- nodejs之express入门
首先安装nodejs,官网下载安装包直接安装, 由于node自带npm,所以npm命令直接即可使用 打开cmd,使用npm install -g express-generator安装express ...
- Python初记
------Python是一个优雅的大姐姐 我是通过<老男孩Python>学习Python,根据我手上的资源学习Python,资料不齐,但是这个是最好的,边学习边寻找有没有相同的类型. 在 ...
- luogu 2993 [FJOI2014]最短路径树问题 Dijkstra+点分治
挺简单的,但是给人一种把两个问题强行弄到一起的感觉. 十分不好写. Code: #include <queue> #include <cstdio> #include < ...
- LeetCode 141、142环形链表
141题: 首先,先看141题,这个题是比较初级也是比较经典的环形链表题: 给定一个链表,判断链表中是否有环. 进阶:你能否不使用额外空间解决此题? 那么,什么是有环的链表呢: 这个就是有环的链表 题 ...
- Codeforces 343D Water Tree & 树链剖分教程
原题链接 题目大意 给定一棵根为1,初始时所有节点值为0的树,进行以下三个操作: 将以某点为根的子树节点值都变为1 将某个节点及其祖先的值都变为0 *询问某个节点的值 解题思路 这是一道裸的树链剖分题 ...
- iview简单使用+按需加载组件的方法(全局和局部)
1,简单使用 vue项目中使用iview非常简单: 首先安装依赖: $ npm install iview --save 会安装最新版本的依赖,安装完成后package.json会出现如下图配置 表示 ...
- textarea 自动高度
textarea 自动撑开高度 var textAreaArr = document.querySelectorAll('.textarea'); for (var i = 0; i < tex ...
- Docker入门-介绍和安装
Docker容器 Docker是什么 Docker最初是dotCloud公司创建人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并于 ...
- “fatal error: hdf5.h: 没有那个文件或目录”解决方法
問題一: Installing Caffe without CUDA: fatal error: cublas_v2.h No such file: 在Makefile.config中修改,將CPU_ ...