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

实验报告

一)抽象类的使用

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

抽象类

package java7;

public abstract class  java7 {
	 public abstract void getLength();
	    public abstract void getArea();

}

package java7;

public class Circle extends java7 {
	private double radius;

    public  Circle(double radius){
        this.radius=radius;
    }

    public double getRadius() {
        return radius;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }

    public void getLength() {
        System.out.println("该圆的周长为:"+(2*Math.PI*radius));
    }
    public void getArea() {
        System.out.println("该圆的面积为:"+(Math.PI*Math.pow(radius,2)));
    }

}

矩形

package java7;

public class Rectangle  extends java7 {
	private double width;
    private double high;
    public Rectangle(double width,double high){
        this.width=width;
        this.high=high;
    }
    public double getHigh() {
        return high;
    }

    public double getWidth() {
        return width;
    }

    public void setHigh(double high) {
        this.high = high;
    }

    public void setWidth(double width) {
        this.width = width;
    }

    public void getLength() {
        System.out.println("该矩形的周长为:"+2*(width+high));
    }
    public void getArea() {
        System.out.println("该矩形的面积为:"+width*high);
    }

}

三角形

package java7;

public class Triangle  extends java7 {
	private double a,b,c;
    double p;
    public  Triangle(double a,double b,double c){
        this.a=a;
        this.b=b;
        this.c=c;
        p=(a+b+c)/2;
    }

    public double getA() {
        return a;
    }

    public double getB() {
        return b;
    }

    public double getC() {
        return c;
    }

    public void setA(double a) {
        this.a = a;
    }

    public void setB(double b) {
        this.b = b;
    }

    public void setC(double c) {
        this.c = c;
    }

    public void getLength() {
        System.out.println("该三角形的周长为:"+(a+b+c));
    }

    public void getArea() {
        System.out.println("该三角形的面积为:"+Math.sqrt(p*(p-a)*(p-b)*(p-c)));
    }

}
package java7;

public class test {
	public static void main(String[] args){
       java7 sha1=new Circle(6);
       java7 sha2=new Rectangle(2,5);
       java7 sha3=new Triangle(6,8,10);
        sha1.getLength();
        sha1.getArea();
        sha2.getLength();
        sha2.getArea();
        sha3.getLength();
        sha3.getArea();
    }

}

(二)使用接口技术

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

package java7;

public  interface Shape {
	public abstract void size();       
	}
	class Straight implements Shape{      
	   private double line;
	   public Straight(double line){    
	       this.line=line;             
	   }
	    public void size() {          
	        System.out.println("直线的大小:"+line);

	    }
	}
	class Circle implements Shape{     
	    private  double r;
	   public Circle(double r){   
	       this.r=r;         
	   }
	    public void size() {         
	        System.out.println("圆的面积:"+Math.PI*r*r);

	    }
	}
package java7;

public class test {
	
		    public static void main(String[] args){
		        Shape shape1=new Straight(8);
		        Shape shape2=new Circle(3);      
		        shape1.size();
		        shape2.size();           
		    }

	}

1.instanceof关键字

其实instanceof就是一个操作符,语法形式很简单:

A instanceof B

A通常是引用变量,B通常是一个类或者是接口,表示的含义有三个:

(1)A是否是B的实例,

(2)A是否是B子类的实例

(3)A是否是B接口实现类的实例

也就是说我们平时使用instanceof关键字一般作为判断左右两侧是否有继承或者是实现关系。
带着上面的问题,下面我们就具体看看如何去使用这个关键字。


2.Object类

Object类是一个特殊的类,是所有类的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类。

这里主要总结Object类中的三个常用方法:

toString()取得对象信息方法

equals()对象相等判断方法

hashCode()对象签名方法


3.抽象类与接口的关系

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

4.abstract关键字:

抽象方法都需要用abstract关键字声明,包含抽象方法的类也需要使用abstract关键字声明,
抽象类和普通类相比,区别在于抽象类带有抽象方法,抽象方法可以只声明,而不需要方法体。

posted @ 2019-10-10 18:58  罗宇梁  阅读(209)  评论(0编辑  收藏  举报