zoukankan      html  css  js  c++  java
  • Java实验报告五

    Java实验报告五

    一、题目

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

    注:三角形面积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接口。分别创建一个“直线”、“圆”对象,将各类图形的大小输出。
    2.编程技巧
    (1)接口中定义的方法在实现接口的具体类中要重写实现;
    (2)利用接口类型的变量可引用实现该接口的类创建的对象。

    二、实验代码

    (一)抽象类的使用

    public abstract class Shape {
    	public void Area() {
    		System.out.println(this.getArea());
    	}
    
    	public abstract String getArea();
    
    }
    
    
    public class Triangle extends Shape {
    	private double a, b, 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 Triangle(double a, double b, double c) {
    		super();
    		this.a = a;
    		this.b = b;
    		this.c = c;
    	}
    
    	public String getArea() {
    		double p = (a + b + c) / 2;
    		return "三角形面积:" + Math.sqrt(p * (p - a) * (p - b) * (p - c));
    	}
    
    }
    
    
    public class Rectangle extends Shape {
    	private double length;
    	private double width;
    
    	public double getLength() {
    		return length;
    	}
    
    	public void setLength(double length) {
    		this.length = length;
    	}
    
    	public double getWidth() {
    		return width;
    	}
    
    	public void setWidth(double width) {
    		this.width = width;
    	}
    
    	public Rectangle(double length, double width) {
    		super();
    		this.length = length;
    		this.width = width;
    	}
    
    	public String getArea() {
    		return "矩形面积:" + this.width * this.length;
    	}
    
    }
    
    
    public class Circle extends Shape {
    	private double r;
    
    	public double getR() {
    		return r;
    	}
    
    	public void setR(double r) {
    		this.r = r;
    	}
    
    	public Circle(double r) {
    		super();
    		this.r = r;
    	}
    
    	public String getArea() {
    		return "圆形面积:" + Math.PI * r * r;
    	}
    
    }
    
    public class Test {
    
    	public static void main(String[] args) {
    		Shape shape1 = new Triangle(2, 2, 2);
    		Shape shape2 = new Rectangle(2, 3);
    		Shape shape3 = new Circle(2);
    		shape1.Area();
    		shape2.Area();
    		shape3.Area();
    
    	}
    
    }
    

    (二)使用接口技术

    public interface Shape {
    	public void size();
    
    }
    
    
    public class Line implements Shape {
    	private double length;
    
    	public double getLength() {
    		return length;
    	}
    
    	public void setLength(double length) {
    		this.length = length;
    	}
    
    	public Line(double length) {
    		super();
    		this.length = length;
    	}
    
    	public void size() {
    		System.out.println("直线大小:" + length + "米");
    	}
    
    }
    
    public class Circle implements Shape {
    	private double r;
    
    	public double getR() {
    		return r;
    	}
    
    	public void setR(double r) {
    		this.r = r;
    	}
    
    	public Circle(double r) {
    		super();
    		this.r = r;
    	}
    
    	public void size() {
    		System.out.println("圆的大小:" + Math.PI * r * r + "平方米");
    	}
    
    }
    
    public class Test {
    
    	public static void main(String[] args) {
    		Shape shape1=new Line(1);
    		Shape shape2=new Circle(2);
    		shape1.size();
    		shape2.size();
    
    	}
    
    }
    

    三、运行结果截图

  • 相关阅读:
    【转】C#中Invoke的用法
    SQLite判断某表是否存在
    qemu-kvm安装and配置桥接和SR-IOV
    Linux内核模块开发(简单)
    NetSpectre:通过网络读取任意内存
    Packet Chasing:通过缓存侧信道监视网络数据包
    Mastik:微体系结构侧信道攻击工具包
    infiniband网卡安装、使用总结
    NetCAT:来自网络的实用缓存攻击
    从线性回归案例理解深度学习思想
  • 原文地址:https://www.cnblogs.com/huangxuannn/p/12775891.html
Copyright © 2011-2022 走看看