实验报告
学习总结:
equals方法:
(1)equals()是Object中的方法,作用在于检测一个对象是否等于另一个对象。
(2)在Object类中equals()方法是判断两个对象是否有相同的引用 ,即是否是相同的对象。
(3)String重写equals()方法,String的equals()方法用途比较两个字符对象的字符序列是否相同
(一)抽象类的使用
1.设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。
注:三角形面积s=sqrt(p(p-a)(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2
2.编程技巧
(1) 抽象类定义的方法在具体类要实现;
(2) 使用抽象类的引用变量可引用子类的对象;
(3) 通过父类引用子类对象,通过该引用访问对象方法时实际用的是子类的方法。可将所有对象存入到父类定义的数组中。
实验代码
package Output;
abstract class Shuchu{
public abstract double area();
}
package Output;
import java.util.*;
class triangle extends Shuchu{
private double a;
private double b;
private double c;
private double p;
public triangle(double a,double b,double c) {
setA(a);
setB(b);
setC(c);
setP((a+b+c)/2);
}
public double area() {
return Math.sqrt(getP()*(getP()-getA())*(getP()-getB())*(getP()-getC()));
}
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 getP() {
return p;
}
public void setP(double p) {
this.p = p;
}
public void output1() {
System.out.println("三角形面积:"+area());
}
}
class rectangle extends Shuchu{
private double a;
private double b;
public double area() {
return a*b;
}
public rectangle(double a,double b) {
setA(a);
setB(b);
}
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 void output2() {
System.out.println("矩形面积:"+area());
}
}
class circle extends Shuchu{
private double radius;
public double area() {
return (Math.PI*Math.pow(radius, 2));
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public circle(double radius) {
setRadius(radius);
}
public void output3() {
System.out.println("圆面积:"+area());
}
}
package Output;
public class Test{
public static void main(String[] args){
triangle tr=new triangle(2,2,2);
rectangle re=new rectangle(1,2);
circle cr=new circle(1);
tr.output1();
re.output2();
cr.output3();
}
}
结果图
(二)使用接口技术
1定义接口Shape,其中包括一个方法size(),设计“直线”、“圆”、类实现Shape接口。分别创建一个“直线”、“圆”对象,将各类图形的大小输出。
编程技巧
(1) 接口中定义的方法在实现接口的具体类中要重写实现;
(2) 利用接口类型的变量可引用实现该接口的类创建的对象。
实验代码
package Diqizhou;
import Diqizhou.Shape;
interface Shape{
public void size();
}
class Xingzhuang{
public static void size(Shape shape) {
shape.size();
}
}
package Diqizhou;
import java.util.*;
class Straight implements Shape{
private double length;
public Straight(double length) {
setLength(length);
}
public void size() {
System.out.println("直线长度:"+getLength());
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
}
class Circle implements Shape{
private double radius;
public void size() {
System.out.println("圆面积:"+Math.PI*Math.pow(radius, 2));
}
public Circle(double radius) {
setRidus(radius);
}
public double getRadius() {
return radius;
}
public void setRidus(double radius) {
this.radius = radius;
}
}
package Diqizhou;
public class Consequence {
public static void main(String[] args){
Straight st=new Straight(1);
Circle cr=new Circle(1);
st.size();
cr.size();
}
}
结果图