学习总结

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

但也有不同点。

区别点 抽象类 接口
定义 包含一个抽象方法的类 抽象方法和全局变量的集合
组成 构造方法、抽象方法、普通方法、常量、变量 常量、抽象方法
使用 子类继承抽象类(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. spring boot本地开发与docker容器化部署的差异

    spring boot本地开发与docker容器化部署的差异: 1. 文件路径及文件名区别大小写: 本地开发环境为windows操作系统,是忽略大小写的,但容器中区分大小写 2. docker中的容器 ...

  2. python之开发规范

    命名规范 Python之父推荐的规范 Type Public Internal Modules lower_with_under _lower_with_under Packages lower_wi ...

  3. vue开大主要难点解决方式

    问题:在我们那vue开发项目时,多层嵌套组件最繁琐,组件传参成最难的问题,并且对兄弟组件传参也无能为力,也会导致代码很难维护. 解决:采用vuex状态管理,把所有的事件和状态都储存在store对象中, ...

  4. oracle 使用问题

    12541: 典型的listener.ora 文件内容: SID_LIST_LISTENER =   (注册到监听器的service name所在区域)  (SID_LIST =    (SID_DE ...

  5. Linux查看系统开机和关机时间

    1.who 命令查看 who   -b    查看最后一次系统启动的时间 who   -r     查看当前系统运行时间   [root@test ~]# who -b          system ...

  6. ValueError: day is out of range for month

    日期超出范围. 我当时使用datetime模块生成时间格式数据,手误传错参数导致的结果.所以,好好检查数据就可解决问题. 如下: # 将字符串类型数据转化成时间结构数据# 原想写成如下代码import ...

  7. Share:《THE ULTIMATE XSS PROTECTION CHEATSHEET FOR DEVELOPERS》

    Ajin Abraham(OWASP Xenotix XSS Exploit Framework的作者哦!)编写的<THE ULTIMATE XSS PROTECTION CHEATSHEET ...

  8. QT的DPI支持

    在main函数第一行加入: QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 鼠标不按下也响应移动事件: setMouseTra ...

  9. gson转换问题

    list集合中integer问题 List<Integer> lists= gson.fromJson(params.get("lists"), new TypeTok ...

  10. docker compose无法解析正确的版本

    docker compose无法解析正确的版本.如果你使用了一个左双引号,而不是正常的双引号,docker compose将解析版本为“2”,而不是2.应该改为: version: "2&q ...