2019秋JAVA第三周课程总结及实验报告(五)
实验四 类的继承
- 实验目的
- 理解抽象类与接口的使用;
- 了解包的作用,掌握包的设计方法。
- 实验要求
- 掌握使用抽象类的方法。
- 掌握使用系统接口的技术和创建自定义接口的方法。
- 了解 Java 系统包的结构。
- 掌握创建自定义包的方法。
实验内容
(一)抽象类的使用
- 设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。
注:三角形面积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) 接口中定义的方法在实现接口的具体类中要重写实现;
(2) 利用接口类型的变量可引用实现该接口的类创建的对象
实验代码(一)
Shape.java
1 abstract public class Shape { 2 abstract double Area(); 3 }
Rectangle.java
1 public class Triangle extends Shape{ 2 private double p; 3 private double a; 4 private double b; 5 private double c; 6 Triangle(double a, double b, double c){ 7 this.a = a; 8 this.b = b; 9 this.c = c; 10 this.p = (a+b+c)/2; 11 } 12 13 14 double Area(){ 15 return Math.sqrt(p*(p-a)*(p-b)*(p-c)); 16 } 17 18 }
Round.java
1 public class Round extends Shape{ 2 private double r; 3 Round(double radius){ 4 this.r = radius; 5 } 6 7 double Area(){ 8 return Math.PI*r*r; 9 } 10 }
Triangle.java
1 public class Triangle extends Shape{ 2 private double p; 3 private double a; 4 private double b; 5 private double c; 6 Triangle(double a, double b, double c){ 7 this.a = a; 8 this.b = b; 9 this.c = c; 10 this.p = (a+b+c)/2; 11 } 12 13 14 double Area(){ 15 return Math.sqrt(p*(p-a)*(p-b)*(p-c)); 16 } 17 18 }
实验代码(二)
Shape.java
1 public interface Shape { 2 double size(); 3 }
Line.java
1 public class Line implements Shape { 2 private double a; 3 4 Line(double a){ 5 this.a = a; 6 } 7 8 @Override 9 public double size(){ 10 return a; 11 } 12 }
Round.java
1 public class Round implements Shape{ 2 private double r; 3 Round(double radius){ 4 this.r = radius; 5 } 6 7 @Override 8 public double size() { 9 return 2*Math.PI*r; 10 } 11 }
总结
最最基础的继承&覆盖重写,仔细即可。