第七周总结&第五次实验报告
学习总结
这周我们加深了对抽象类与接口的学习,获得的知识点也比上周多了许多,抽象类与接口很相似,就比如别人还没有做完的是交给你来做,而他那些样式都做好了,你只需要完善即可
但也有不同点。
区别点 | 抽象类 | 接口 |
---|---|---|
定义 | 包含一个抽象方法的类 | 抽象方法和全局变量的集合 |
组成 | 构造方法、抽象方法、普通方法、常量、变量 | 常量、抽象方法 |
使用 | 子类继承抽象类(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());
}
}
运行截图
第七周总结&第五次实验报告的更多相关文章
- 20145320《Java程序设计》第五次实验报告
20145320<Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 18: ...
- 20145330《Java程序设计》第五次实验报告
20145330<Java程序设计>第五次实验报告 实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统 4.结队伙伴 ...
- Java第五次实验报告
Java第五次实验报告 实验一 实验内容 两人一组结对编程: 参考 结对实现中缀表达式转后缀表达式的功能 MyBC.java 结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC. ...
- 20145240 《Java程序设计》第五次实验报告
20145240 <Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.05.06 实验 ...
- 第五次实验报告 java 网络编程
20145306 第五次 java 实验报告 实验内容 客户端与服务器连接,客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务器的公钥加密,计算明文的Hash函数值,一起传送给客 ...
- 20145317彭垚 《Java程序设计》第五次实验报告
20145317彭垚实验五 Java网络编程及安全 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 18:30-21: ...
- 《JAVA程序设计》第五次实验报告
20145333 实验五 Java网络编程及安全 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 18:30-21:3 ...
- 20165210 Java第五次实验报告
20165210 实验五 网络编程与安全 网络编程与安全一: 实验要求: 两人一组结对编程: 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA ...
- 第五次实验报告:使用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)-shell脚本注意事项
1.变量=值 (例如STR=abc) 不用加引号,但此时空格不再是空格字符,特殊字符可用于转义 2.等号两侧不能有空格 3.变量名称一般习惯为大写 4.双引号和单引号有区别,双引号仅将空格脱意,单引 ...
- Nginx启动错误 Failed to read PID from file /run/nginx.pid 的处理方法
问题产生原因 因为 nginx 启动需要一点点时间,而 systemd 在 nginx 完成启动前就去读取 pid file 造成读取 pid 失败 解决方法 让 systemd 在执行 ExecSt ...
- 剑指offer-数字在排序数组中出现的次数-数组-python
题目描述 统计一个数字在排序数组中出现的次数. python 内置函数 count()一行就能搞定 解题思路 二分查找到给定的数字及其坐标.以该坐标为中点,向前向后找到这个数字的 始 – 终 ...
- 113、stack的优势 (Swarm20)
参考https://www.cnblogs.com/CloudMan6/p/8157391.html stack 将应用所包含的service,依赖的secret volume 等资源,以及他们之 ...
- vue路由守卫触发顺序
不同组件之间的路由跳转流程图 导航被触发(A–>B) 调用A组件内路由守卫beforeRouteLeave(to,from,next) 调用全局路由前置守卫router.beforeEach(t ...
- console的各种用法
console的各种用法 1.输出信息 console.log('消息内容!'); //输出普通信息 console.info('消息内容!'); //输出提示信息 (在ie上有区分) console ...
- 第十九篇 jQuery初步学习
jQuery 初步学习 jQuery可以理解为是一种脚本,需要到网上下载,它是一个文件,后缀当然是js的文件,它里面封装了很多函数方法,我们直接调用即可,就比方说,我们用JS,写一个显示与隐藏,通 ...
- 问题:com.alibaba.dubbo.rpc.RpcException: Failed to invoke ......
个人解决流程: 一看到这个问题,下意识想到了是dubbo远程连接的问题,可能是dubbo本身的问题,于是在虚拟机上另外一台dubbo能正常脸上的服务器上重新尝试,还是报相同的错误,并且在dubbo-a ...
- javaweb中的标签的核心标签库的常用标签
//标签的使用使得页面的代码更加简洁,jsp脚本的尽可能少的使用,所以熟练掌握标签对于开发是很有必要的 <%--set设置数据,默认在page域 --%> <c:set var=&q ...
- Summer training round2 #10(Training 30)
A:签到题 B!:搜索+DP #include<bits/stdc++.h> #define mp make_pair #define pi pair<int,int> usi ...