实验报告(五)&第七周学习总结

实验目的

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

实验要求

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

实验内容

(一)抽象类的使用

设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。

注:三角形面积s=sqrt(p*(p-a)*(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2

2.编程技巧

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

(二)使用接口技术

1定义接口Shape,其中包括一个方法size(),设计“直线”、“圆”、类实现Shape接口。分别创建一个“直线”、“圆”对象,将各类图形的大小输出。
编程技巧
(1) 接口中定义的方法在实现接口的具体类中要重写实现;
(2) 利用接口类型的变量可引用实现该接口的类创建的对象。

实验代码(1)

package Jeff;

import java.util.Scanner;
class Triangle extends Shape{
    private double a;
    private double b;
    private double c;
    private double p=(a+b+c)/2;
    private double s=Math.sqrt(p*(p-a)*(p-b)*(p-c));
    public Triangle(double a,double b,double c) {
        this.a=a;
        this.b=b;
        this.c=c;
        this.p=(a+b+c)/2;
        this.s=Math.sqrt(p*(p-a)*(p-b)*(p-c));
    }           
    public double getArea() {
        return s;
    }
}
class Rectangle extends Shape{
    private double width;
    private double height;
    public Rectangle(double width,double height) {
        this.width=width;
        this.height=height;
    }
    public double getArea() {
        return width*height;
    }
}
class Circle extends Shape{
    private double radius;
    public Circle(double r) {
        this.radius=r;
    }
    public double getArea() {
        return Math.PI*radius*radius;
    }
}
abstract class Shape{
    public void area() {
        System.out.println("面积="+this.getArea());
    }

    public abstract double getArea();
}

package Jeff;

public class test {
	    public static void main(String[] args) {
	        Circle d=new Circle(5);
	        d.area();
	        Rectangle d1=new Rectangle(7,5);
	        d1.area();
	        Triangle d2=new Triangle(3,4,5);
	        d2.area();
	    }
	}

运行结果截图:

实验代码(2)

package Jeff;

public class jiekou {
	interface Shape{
	    public void size();
	}
	class Stright implements Shape{
	    private double length;
	    public Stright(double length) {
	        this.length=length;
	    }
	    public void size() {
	        System.out.println("直线的长度="+length);
	    }
	}
	class Circle implements Shape{
	    private double radius;
	    public Circle(double radius) {
	        this.radius=radius;
	    }
	    public void size() {
	        System.out.println("圆的面积="+Math.PI*radius*radius);
	    }
	}

public class demo {
	    public void main(String[] args) {
	        Shape a=new Stright(7);
	        Shape b=new Circle(5);
	        a.size();
	        b.size();
	    }
	}

}

运行结果截图:

学习总结:

学到了什么:

1.异常的相关知识:
1)概念:异常是导致程序中断运行的一种指令流。
2)异常处理格式:

try{
           //有可能出现异常的语句
}catch(异常类  异常对象){
         //编写异常的处理语句
}[ catch(异常类 异常对象){
       //编写异常的处理语句
}catch(异常类 异常对象){
      //编写异常的处理语句
}...]
[finally{
一定会运行到的程序代码  ;
}]

2.throws与throw关键字:
格式:

public 返回值类型   方法名称(参数列表...) throws 异常类{}

class Math{
         public int div(int i,int j) throws Exception{             //方法可以不处理异常
                  int temp = i/j;
                  return temp;
        }
} 
使用 throws 关键字后,可以不使用 try...catch 语句进行异常的捕获及处理。
throw 不会单独使用

学习不足:

1、无法解决代码出现的小问题,如调试;
2、不能及时完成作业
3、上课有点走神
……

学习改进:

1、坚持每天看一期有关Java的视频;
2、逛学习论坛,学习一点课外相关知识;
3、每天完成一个小编程代码;
4、熟悉ecilps用法及其帮助文档
······

原文地址:https://www.cnblogs.com/ImportantMagic/p/11635597.html