学习总结

这周我们加深了对抽象类与接口的学习,获得的知识点也比上周多了许多,抽象类与接口很相似,就比如别人还没有做完的是交给你来做,而他那些样式都做好了,你只需要完善即可

但也有不同点。

区别点 抽象类 接口
定义 包含一个抽象方法的类 抽象方法和全局变量的集合
组成 构造方法、抽象方法、普通方法、常量、变量 常量、抽象方法
使用 子类继承抽象类(extends) 子类实现接口(implements)
关系 抽象类可以实现多个接口 接口不能继承抽象类,但允许继承多个接口
常见设计模式 模板设计 工厂设计,代理设计
局限 抽象类有单继承的局限 接口没有单继承的局限
实际 作为一个模板 是作为一个标准或不是一种能力
对象 都通过对象的多态性产生实例化对象 都通过对象的多态性产生实例化对象
选择 如果抽象类和接口都可使用的话,优先使用接口,因为避免单继承的局限 如果抽象类和接口都可使用的话,优先使用接口,因为避免单继承的局限
特殊 一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类 一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类

这周我们还学习了一个特殊的类object类,object类就像一个公共类,如果一个类没有明显的继承一个类,那么它就是object的子类了。

实验报告

(一)抽象类的使用

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

抽象父类

package test7;

abstract class Shape {
abstract public double Area(); }

三角形

package test7;

public class Triangle extends Shape {

	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 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 Area() {
double p=(a+b+c)/2;
return Math.sqrt(p*(p-a)*(p-b)*(p-c));
} }

矩形

package test7;

public class Ractangle extends Shape {

	private double height;
private double width;
public Ractangle(double height,double width) {
this.height=height;
this.width=width;
} public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double Area() {
return height*width;
} }

圆形

package test7;

public class Circle extends Shape {

	private double r;

	public Circle(double r) {
this.r=r;
} public double getR() {
return r;
} public void setR(double r) {
this.r = r;
}
public double Area() {
return Math.PI*r*r;
} }

测试类

package test7;

public class Ceshi {

	public static void main(String[] args) {
// TODO Auto-generated method stub
Shape s1=new Triangle(4,5,6);
Shape s2=new Ractangle(7,8);
Shape s3=new Circle(4);
System.out.println("三角形面积:"+s1.Area());
System.out.println("长方形面积:"+s2.Area());
System.out.println("圆形面积:"+s3.Area()); } }

运行截图

(二)接口技术

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

package test8;

interface Shape {
public double getSize(); }

圆类

package test8;

class Circle implements Shape {
private double r;
public Circle(double r) {
this.r=r;
} public double getR() {
return r;
} public void setR(double r) {
this.r = r;
} public double getSize() {
// TODO Auto-generated method stub
return Math.PI*r*r;
} }

直线类

package test8;

class Line implements Shape {
private double x1,y1,x2,y2;
public Line(double x1,double y1,double x2,double y2) {
this.x1=x1;
this.y1=y1;
this.x2=x2;
this.y2=y2;
}
public double getX1() {
return x1;
}
public void setX1(double x1) {
this.x1 = x1;
}
public double getY1() {
return y1;
}
public void setY1(double y1) {
this.y1 = y1;
}
public double getX2() {
return x2;
}
public void setX2(double x2) {
this.x2 = x2;
}
public double getY2() {
return y2;
}
public void setY2(double y2) {
this.y2 = y2;
}
public double getSize() {
return Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
} }

测试类

package test8;

public class Ceshi {

	public static void main(String[] args) {
// TODO Auto-generated method stub
Shape s1=new Circle(5);
Shape s2=new Line(4,5,7,9);
System.out.println("圆的面积:"+s1.getSize());
System.out.println("直线长度:"+s2.getSize()); } }

运行截图

第七周总结&第五次实验报告的更多相关文章

  1. 20145320《Java程序设计》第五次实验报告

    20145320<Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 18: ...

  2. 20145330《Java程序设计》第五次实验报告

    20145330<Java程序设计>第五次实验报告 实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统 4.结队伙伴 ...

  3. Java第五次实验报告

    Java第五次实验报告 实验一 实验内容 两人一组结对编程: 参考 结对实现中缀表达式转后缀表达式的功能 MyBC.java 结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC. ...

  4. 20145240 《Java程序设计》第五次实验报告

    20145240 <Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.05.06 实验 ...

  5. 第五次实验报告 java 网络编程

    20145306 第五次 java 实验报告 实验内容 客户端与服务器连接,客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务器的公钥加密,计算明文的Hash函数值,一起传送给客 ...

  6. 20145317彭垚 《Java程序设计》第五次实验报告

    20145317彭垚实验五 Java网络编程及安全 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 18:30-21: ...

  7. 《JAVA程序设计》第五次实验报告

    20145333 实验五 Java网络编程及安全 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 18:30-21:3 ...

  8. 20165210 Java第五次实验报告

    20165210 实验五 网络编程与安全 网络编程与安全一: 实验要求: 两人一组结对编程: 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA ...

  9. 第五次实验报告:使用Packet Tracer理解OSPF路由协议

    目录 1 实验目的 2 实验内容 3. 实验报告 3.1 建立网络拓扑结构 4. 配置 4.1 配置并激活串行地址和以太网地址 4.1.1 R1 4.1.2 R2 4.1.3 R3 4.1.4 PC ...

随机推荐

  1. 大数据学习(1)-shell脚本注意事项

    1.变量=值 (例如STR=abc)  不用加引号,但此时空格不再是空格字符,特殊字符可用于转义 2.等号两侧不能有空格 3.变量名称一般习惯为大写 4.双引号和单引号有区别,双引号仅将空格脱意,单引 ...

  2. Nginx启动错误 Failed to read PID from file /run/nginx.pid 的处理方法

    问题产生原因 因为 nginx 启动需要一点点时间,而 systemd 在 nginx 完成启动前就去读取 pid file 造成读取 pid 失败 解决方法 让 systemd 在执行 ExecSt ...

  3. 剑指offer-数字在排序数组中出现的次数-数组-python

    题目描述 统计一个数字在排序数组中出现的次数.   python 内置函数 count()一行就能搞定   解题思路 二分查找到给定的数字及其坐标.以该坐标为中点,向前向后找到这个数字的 始 – 终 ...

  4. 113、stack的优势 (Swarm20)

    参考https://www.cnblogs.com/CloudMan6/p/8157391.html   stack 将应用所包含的service,依赖的secret volume 等资源,以及他们之 ...

  5. vue路由守卫触发顺序

    不同组件之间的路由跳转流程图 导航被触发(A–>B) 调用A组件内路由守卫beforeRouteLeave(to,from,next) 调用全局路由前置守卫router.beforeEach(t ...

  6. console的各种用法

    console的各种用法 1.输出信息 console.log('消息内容!'); //输出普通信息 console.info('消息内容!'); //输出提示信息 (在ie上有区分) console ...

  7. 第十九篇 jQuery初步学习

    jQuery 初步学习   jQuery可以理解为是一种脚本,需要到网上下载,它是一个文件,后缀当然是js的文件,它里面封装了很多函数方法,我们直接调用即可,就比方说,我们用JS,写一个显示与隐藏,通 ...

  8. 问题:com.alibaba.dubbo.rpc.RpcException: Failed to invoke ......

    个人解决流程: 一看到这个问题,下意识想到了是dubbo远程连接的问题,可能是dubbo本身的问题,于是在虚拟机上另外一台dubbo能正常脸上的服务器上重新尝试,还是报相同的错误,并且在dubbo-a ...

  9. javaweb中的标签的核心标签库的常用标签

    //标签的使用使得页面的代码更加简洁,jsp脚本的尽可能少的使用,所以熟练掌握标签对于开发是很有必要的 <%--set设置数据,默认在page域 --%> <c:set var=&q ...

  10. Summer training round2 #10(Training 30)

    A:签到题 B!:搜索+DP #include<bits/stdc++.h> #define mp make_pair #define pi pair<int,int> usi ...