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

实验四类的继承

  • 实验目的
  • 理解抽象类与接口的使用;
  • 了解包的作用,掌握包的设计方法。
  • 实验要求
  • 掌握使用抽象类的方法。
  • 掌握使用系统接口的技术和创建自定义接口的方法。
  • 了解 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接口。分别创建一个“直线”、“圆”对象,将各类图形的大小输出。

  1. 编程技巧

(1) 接口中定义的方法在实现接口的具体类中要重写实现;

(2) 利用接口类型的变量可引用实现该接口的类创建的对象。

 

(一)实验源码:

 1 import java.util.*;
 2 
 3 abstract class Shape{
 4     public abstract double area();
 5 }
 6 class triangle extends Shape {
 7     private double a,b,c,p;
 8     public triangle(double a,double b,double c) {
 9         setA(a);
10         setB(b);
11         setC(c);
12         setP((a+b+c)/2);
13     }
14     public double area() {
15         return Math.sqrt(getP()*(getP()-getA())*(getP()-getB())*(getP()-getC()));
16     }
17     public double getA() {
18         return a;
19     }
20     public void setA(double a) {
21         this.a = a;
22     }
23     public double getB() {
24         return b;
25     }
26     public void setB(double b) {
27         this.b = b;
28     }
29     public double getC() {
30         return c;
31     }
32     public void setC(double c) {
33         this.c = c;
34     }
35     
36     public double getP() {
37         return p;
38     }
39     public void setP(double p) {
40         this.p = p;
41     }
42     public void output1() {
43         System.out.println("三角形面积:"+area());
44     }
45 }
46 class rectangle extends Shape{
47     private double a,b;
48     public double area() {
49         return a*b;
50     }
51     public rectangle(double a,double b) {
52         setA(a);
53         setB(b);
54     }
55     public double getA() {
56         return a;
57     }
58     public void setA(double a) {
59         this.a = a;
60     }
61     public double getB() {
62         return b;
63     }
64     public void setB(double b) {
65         this.b = b;
66     }
67     
68     public void output2() {
69         System.out.println("矩形的面积:"+area());
70     }
71 }
72 class circle extends Shape{
73     private double radius;
74     public double area() {
75         return 2*(Math.PI*Math.pow(radius, 2));
76     }
77     public double getRadius() {
78         return radius;
79     }
80     public void setRadius(double radius) {
81         this.radius = radius;
82     }
83     public circle(double radius) {
84         setRadius(radius);
85     }
86     public void output3() {
87         System.out.println("圆的面积:"+area());
88     }
89 }
90 public class Text1{
91     public static void main(String[] args){
92         triangle tr=new triangle(4,5,6);
93         rectangle re=new rectangle(4,6);
94         circle cr=new circle(4);
95         tr.output1();
96         re.output2();
97         cr.output3();
98     }
99 }

实验结果:

(二)实验源码:

 1 import java.util.*;
 2 
 3 interface Shape{
 4     public void size(); 
 5 }
 6 class Line implements Shape{
 7     private double length;
 8     public Line(double length) {
 9         setLength(length);
10     }
11     public void size() {
12         System.out.println("直线长度:"+getLength());
13     }
14     public double getLength() {
15         return length;
16     }
17     public void setLength(double length) {
18         this.length = length;
19     }
20 }
21 class Circle implements Shape{
22     private double ridus;
23     public void size() {
24         System.out.println("圆的面积:"+(2*(Math.PI*Math.pow(ridus, 2))));
25     }
26     public Circle(double ridus) {
27         setRidus(ridus);
28     }
29     public double getRidus() {
30         return ridus;
31     }
32     public void setRidus(double ridus) {
33         this.ridus = ridus;
34     }
35     
36 }
37 public class Text1{
38     public static void main(String[] args){
39         Line ln=new Line(3);
40         Circle cr=new Circle(3);
41         ln.size();
42         cr.size();
43     }
44 }

实验结果:

这次实验很简单,实验过程没有问题和困惑,所以没有错误截图。

第七周学习总结

本周主要学习了抽象类和接口的应用,object类的基本作用。

一,接口与抽象类的实际应用

(1)抽象类实际应用——模板设计

(2)接口的实际应用——制定标准

二,object类的基本作用

Object是java中最为常见的一个系统程序类,object类可以实现参数统一。

(1)在java中所有的类都有一个公共的父类object类,一个类只要没有明显的继承一个类,则肯定是object类的子类。以下两代码的含义是一样的:

class  Person extends Object{}

class  Person{}

(2)Object类的主要方法

序号

方法名称

类型

描述

1

public Object()

构造

构造方法

2

public boolean equals(Object obj)

普通

对象比较

3

public int hashCode()

普通

取得Hash码

4

public String toSting()

普通

对象打印时调用

原文地址:https://www.cnblogs.com/noacgnnolife/p/11655043.html