实验四类的继承
- 实验目的
- 理解抽象类与接口的使用;
- 了解包的作用,掌握包的设计方法。
- 实验要求
- 掌握使用抽象类的方法。
- 掌握使用系统接口的技术和创建自定义接口的方法。
- 了解 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) 利用接口类型的变量可引用实现该接口的类创建的对象。
(一)实验源码:
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() |
普通 |
对象打印时调用 |