实验四 类的继承
实验目的
理解抽象类与接口的使用;
了解包的作用,掌握包的设计方法。
实验要求
掌握使用抽象类的方法。
掌握使用系统接口的技术和创建自定义接口的方法。
了解 Java 系统包的结构。
掌握创建自定义包的方法。
实验内容
(一)抽象类的使用
设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。
注:三角形面积s=sqrt(p(p-a)(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2
代码
定义抽象方法
package 实验报告5;
abstract class shape {
public abstract double print(); //定义抽象方法
}
三角形
package 实验报告5;
class Triangle extends shape {
private double a;
private double b;
private double c;
public Triangle(double a,double b,double c){
this.a=a;
this.b=b;
this.c=c;
}
public double print() {
double p=(a+b+c)/2;
return Math.sqrt(p*(p-a)*(p-b)*(p-c));
}
}
矩形
package 实验报告5;
class Rectangle1 extends shape {
private double width;
private double height;
public Rectangle1(double width, double height){
this.height=height;
this.width=width;
}
public double print() {
return width*height;
}
}
圆
package 实验报告5;
class Circle1 extends shape {
double radious;
public Circle1(double radious){
this.radious=radious;
}
public double print() {
return Math.PI*radious*radious;
}
}
结果
package 实验报告5;
class Circle1 extends shape {
double radious;
public Circle1(double radious){
this.radious=radious;
}
public double print() {
return Math.PI*radious*radious;
}
}
截图
2.编程技巧
(1) 抽象类定义的方法在具体类要实现;
(2) 使用抽象类的引用变量可引用子类的对象;
(3) 通过父类引用子类对象,通过该引用访问对象方法时实际用的是子类的方法。可将所有对象存入到父类定义的数组中。
(二)使用接口技术
1定义接口Shape,其中包括一个方法size(),设计“直线”、“圆”、类实现Shape接口。分别创建一个“直线”、“圆”对象,将各类图形的大小输出。
编程技巧
(1) 接口中定义的方法在实现接口的具体类中要重写实现;
(2) 利用接口类型的变量可引用实现该接口的类创建的对象。
代码
package 接口;
public interface Shape { //定义接口Shape
public abstract void size();
}
class Straight implements Shape{
private double figure;
public Straight(double figure){
this.figure=figure;
}
public void size() {
System.out.println("直线的大小:"+figure);
}
}
class Circle2 implements Shape{
private double radious;
public Circle2(double radious){
this.radious=radious;
}
public void size() {
System.out.println("圆的面积:"+Math.PI*radious*radious);
}
}
public class Ending2 {
public static void main(String[] args){
Shape s1=new Straight(6);
Shape s2=new Circle2(9);
s1.size();
s2.size();
}
}
总结
本周实验报告主要是关于抽象类与接口的实际应用,让我对接口和继承这两个概念有了一个更深刻的认识,后续还需要更深层的去学习理解。
抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
包含一个抽象方法的类必须是抽象类;抽象类和抽象方法都要使用abstract关键字来声明;而接口是一种特殊的类,里面全部是由全局变量和公共的抽象方法组成。
对抽象类与接口还是要加深学习