zoukankan      html  css  js  c++  java
  • 第七周课程总结&实验报告(五)

    实验报告(五)

    一.实验目的

    1.理解抽象类与接口的使用;
    2.了解包的作用,掌握包的设计方法。

    二.实验要求

    1.掌握使用抽象类的方法。
    2.掌握使用系统接口的技术和创建自定义接口的方法。
    3.了解 Java 系统包的结构。
    4.掌握创建自定义包的方法。

    三.实验内容

    1.抽象类的使用

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

    编译技巧:

    • 抽象类定义的方法在具体类要实现;
    • 使用抽象类的引用变量可引用子类的对象;
    • 通过父类引用子类对象,通过该引用访问对象方法时实际用的是子类的方法。可将所有对象存入到父类定义的数组中。

    (1)实验代码:

    抽象类以及三角型、矩形、圆的对象

    package 测试;
    
    public abstract class Shape {
    	public abstract double getArea();
    }
    
    class Triangle extends Shape{
    	private double a,b,c;
    	
    	public Triangle(double a, double b, double c) {
    		this.a = a;
    		this.b = b;
    		this.c = c;
    	}
    	
    	public double getArea() {
    		double p=(a+b+c)/2;
    		double area=Math.sqrt(p*(p-a)*(p-b)*(p-c));
    		return area;
    	}
    	
    }
    	
    class Rectangle extends Shape{
    	private double a,b;
    	
    	public Rectangle(double a, double b) {
    		this.a = a;
    		this.b = b;
    	}
    
    	public double getArea() {
    		double area=a*b;
    		return area;
    	}
    	
    }
    
    class Circle extends Shape{
    	private double r;
    
    	public Circle(double r) {
    		this.r = r;
    	}
    
    	public double getArea() {
    		double area=Math.PI*r*r;
    		return area;
    	}
    	
    }
    

    实验运行

    package 测试;
    import java.util.Scanner;
    public class 测试0 {
    	public static void main(String[] args) {
    		Scanner num=new Scanner(System.in);
    		System.out.println("请输入三角形的的边长:");
    		double a=num.nextDouble();
    		double b=num.nextDouble();
    		double c=num.nextDouble();
    		Shape triangle=new Triangle(a,b,c);
    		System.out.println("三角形的面积为:"+triangle.getArea());
    		System.out.println("");
    		System.out.println("请输入矩形的长和宽:");
    		double a1=num.nextDouble();
    		double b1=num.nextDouble();
    		Shape rectangle=new Rectangle(a1,b1);
    		System.out.println("矩形的面积为:"+rectangle.getArea());
    		System.out.println("");
    		System.out.println("请输入圆的半径:");
    		double r=num.nextDouble();
    		Shape circle=new Circle(r);
    		System.out.println("圆的面积为:"+circle.getArea());
    	}
    
    }
    
    

    (2)实验运行结果截图:

    (3)实验大致思路:

    定义抽象类Shape,在其中定义获取形状的面积的抽象方法getArea();,然后分别定义三角形,矩形,圆形的对象,最后输出它们的数据并将它们的面积输出

    (4)实验中遇到的问题:

    题目不复杂,就是一开始编写的时候想放在一个文件里,它显示Shape抽象类必须在自己的文件中定义,新建一个文件就没问题了.

    2.使用接口技术

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

    编程技巧:

    • 接口中定义的方法在实现接口的具体类中要重写实现;
    • 利用接口类型的变量可引用实现该接口的类创建的对象。

    (1)实验代码:

    接口以及直线、圆的对象

    package 测试;
    
    public interface Shape {
    	public void size();
    }
    
    class Line implements Shape{
    	private double lenght;
    
    	public Line(double lenght) {
    		this.lenght = lenght;
    	}
    
    	public void size() {
    		System.out.println("直线的长度为:"+lenght);
    	}
    
    }
    class Circle implements Shape{
    	private double r;
    
    	public Circle(double r) {
    		this.r = r;
    	}
    
    	public void size() {
    		double lenght=2*r*Math.PI;
    		double area=Math.PI*r*r;
    		System.out.println("圆的半径为:"+r);
    		System.out.println("圆的周长为:"+lenght);
    		System.out.println("圆的的面积长度为:"+area);
    	}
    
    }
    

    实验运行

    package 测试;
    import java.util.Scanner;
    
    
    public class 测试0 {
    	public static void main(String[] args) {
    		Scanner num=new Scanner(System.in);
    		System.out.println("请输入直线的长度:");
    		double lenght=num.nextDouble();
    		Shape line=new Line(lenght);
    		line.size();
    		System.out.println("请输入圆的半径:");
    		double r=num.nextDouble();
    		Shape circle=new Circle(r);
    		circle.size();
    	}
    }
    
    

    (2)实验运行结果截图:

    (3)实验大致思路:

    定义接口Shape,其中包括一个方法size();,然后定义直线还有圆的对象,输入它们的数据,并将直线的长度,圆的半径,周长,面积输出.

    (4)实验中遇到的问题:

    接口和抽象类还是很相像的,这2道题的思路基本一致,所以做起来很容易,没有出现什么问题

    第七周课程总结

    这周主要讲了抽象类与接口的运用,还有Object类的定义和基本方法

    这周学习的内容:

    1.抽象类与接口之间的关系

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

    2.Object类

    在Java中所有的类都有一个公共的父类就是Object类,一个类只要没有明显的继承一个类,则肯定是Object类的子类。如下两种代码表示的含义都是一样的:

    class Person extends Object{}
    class Person{}
    
    

    Object类中的主要方法

    序号 方法名称 类型 描述
    1 public Object() 构造 构造方法
    2 public boolean equals(Object obj) 普通 对象比较
    3 public int hashCode() 普通 取得Hash码
    4 public String toString() 普通 对象打印时调用
  • 相关阅读:
    Java集合框架
    Java数据结构
    Java中的关键字
    Java中的类和接口
    Bootstrap-datepicker3官方文档中文翻译---Markup/标记(原文链接 http://bootstrap-datepicker.readthedocs.io/en/latest/index.html)
    Bootstrap-datepicker3官方文档中文翻译---概述(原文链接 http://bootstrap-datepicker.readthedocs.io/en/latest/index.html)
    ionic3中NavController类push setRoot相关问题解决
    加载数据时,页面显示正在加载的动画,支持移动端
    判断计算后的数为数字,才在前台页面显示,否则用-代替
    ionic3中 ion-datetime 全屏可点击问题解决方案
  • 原文地址:https://www.cnblogs.com/zhuwanxing/p/11652050.html
Copyright © 2011-2022 走看看