实验四 类的继承

实验目的

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

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

实验要求

掌握使用抽象类的方法。

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

了解 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的更多相关文章

  1. 第七周总结&实验报告5

    这一周的课程内容比较难,而且比较不容易理解,所有学习的很吃力,现在接触的知识越来越多,也越来越难了,还是要多对照书本来进行学习! 这周主要学的有: 一.抽象类 1.Java中可以创建一种类专门用来当作 ...

  2. 第六周作业&实验报告四

    一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆 ...

  3. 2018-2019-1 20189221 《Linux内核原理与分析》第七周作业

    2018-2019-1 20189221 <Linux内核原理与分析>第七周作业 实验六 分析Linux内核创建一个新进程的过程 代码分析 task_struct: struct task ...

  4. 2017-2018-1 20179205《Linux内核原理与设计》第七周作业

    <Linux内核原理与设计>第七周作业 视频学习及操作分析 创建一个新进程在内核中的执行过程 fork.vfork和clone三个系统调用都可以创建一个新进程,而且都是通过调用do_for ...

  5. 2019-2020-1 20199329《Linux内核原理与分析》第七周作业

    <Linux内核原理与分析>第七周作业 一.本周内容概述: 对Linux系统如何创建一个新进程进行追踪 分析Linux内核创建一个新进程的过程 二.本周学习内容: 1.学习进程的描述 操作 ...

  6. 2020-2021-1 20209307《Linux内核原理与分析》第七周作业

    这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第七周作业> 这个作业的目标 & ...

  7. 2017-2018-1 我爱学Java 第六七周 作业

    团队六七周作业 完善版需求规格说明书 制定团队编码规范 数据库设计 后端架构设计 TODOList 参考资料 完善版需求规格说明书 <需求规格说明书>初稿不足之处: 1.开发工具写错 2. ...

  8. 2017-2018-1 JAVA实验站 第六、七周作业

    2017-2018-1 JAVA实验站 第六.七周作业 详情请见团队博客

  9. 2017-2018-1 JaWorld 第六、七周作业

    2017-2018-1 JaWorld 第六.七周作业 修改需求规格说明书 上次的<需求规格说明书>初稿有哪些不足? 王译潇同学回答:   1. 引言和目的性考虑的不是很周全.   2. ...

随机推荐

  1. .NET-list扩展方法Distinct去重

    原文链接:https://blog.csdn.net/daigualu/article/details/70800012 .NET中list的扩展方法Distinct可以去掉重复的元素,分别总结默认去 ...

  2. Hangfire:任务定时调度

    hangfire 资源: GitHub:https://github.com/HangfireIO/Hangfire http://hangfire.io/ http://docs.hangfire. ...

  3. MVC2新闻

    链接:https://pan.baidu.com/s/1ABJfNYq49DnVlf8tJZ6dtg 提取码:akon 复制这段内容后打开百度网盘手机App,操作更方便哦 1.目录结构 2.首先验证登 ...

  4. javascript中创建对象的方式及优缺点(二)

    一.工厂模式 流程: 定义一个函数,函数返回对象. 适用场景: 需要创建多个对象,都是Object类型. 优点:完成了返回一个对象的要求. 缺点: 对象没有一个具体的类型,无法通过constructo ...

  5. 彩色图像--色彩空间 CMY(K)空间

    学习DIP第63天 转载请标明本文出处:***http://blog.csdn.net/tonyshengtan ***,出于尊重文章作者的劳动,转载请标明出处!文章代码已托管,欢迎共同开发:http ...

  6. Fiona简介

    Fiona是一个python地理空间处理库,类似于OGR

  7. Python GUI教程(六):使用Qt设计师进行窗口布局

    本篇介绍使用qt设计师进行GUI窗口的布局管理,主要包含以下内容: 使用Qt设计师布局我们的窗口部件: 垂直布局: 水平布局: 网格布局: 使用间隔: 使用“伙伴”将label标签与窗口部件进行连接. ...

  8. Mybatis笔记总结

    第一.Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改 ...

  9. 在oracle数据库里创建自增ID字段的步骤

    CREATE TABLE ADVICE ( ID INT NOT NULL, ACTIVE NOT NULL, TYPE INT NOT NULL, MSG ) NOT NULL, ADVICE ) ...

  10. (转)php中字符过滤

    有时候为了安全起见,我们需要对用户输入的字符串进行转义       文章中有不正确的或者说辞不清的地方,麻烦大家指出了--- 与PHP字符串转义相关的配置和函数如下: 1.magic_quotes_r ...