JAVA实验报告及第七周总结
JAVA第六周作业
实验报告五
第一题
1、设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。
注:三角形面积s=sqrt(p*(p-a)*(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2
实验代码
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接口。分别创建一个“直线”、“圆”对象,将各类图形的大小输出。
实验代码
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();
}
}
运行结果
学习总结
1、一个栈内存只能够保存一个堆内存空间的地址。,若想再指向其他的堆内存空间,则必须先断开已有的指向才能分配新的指向。
2、只要是被封装的属性,则必须通过setter()和getter()方法设置和取得。
3、setter()方法进行内容得赋值。
4、类中全部属性都必须封装。
5、用private声明得属性和方法只能在其类的内部被调用,而不能在类的外部被调用。
6、若要强调是本类中的方法,也可以在调用时按“this.方法名称()”的形式编写。
7、main方法不写在抽象类(规范性)。
8、如果抽象类和接口都可以使用时,优先室使用接口,因为可以避免单继承的局限。
9、Object类中toString()方法可直接输出。
10、Object类中的equals()方法默认是比较地址。
学习心得
好好学习,天天向上。