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

实验四                                     类的继承

A、实验目的

  • 理解抽象类与接口的使用;
  • 了解包的作用,掌握包的设计方法。

B、实验要求

  • 掌握使用抽象类的方法。
  • 掌握使用系统接口的技术和创建自定义接口的方法。
  • 了解 Java 系统包的结构。
  • 掌握创建自定义包的方法。

C、实验内容

(一)抽象类的使用

1、设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。

    注:三角形面积s=sqrt(p*(p-a)*(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2。

2、编程技巧

    (1)    抽象类定义的方法在具体类要实现;

    (2)    使用抽象类的引用变量可引用子类的对象;

    (3) 通过父类引用子类对象,通过该引用访问对象方法时实际用的是子类的方法。可将所有对象存入到父类定义的数组中。

实验代码:

package 第七周;

public abstract class Cx 
{
	public abstract double print();
}



class Sanjiaxing extends Cx                        // 继承抽象类,  三角形
{
	private double a;
	private double b;
	private double c; 

	public Sanjiaxing(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));
	}
}




class Juxing extends Cx                        // 继承抽象类,  矩形
{
	private double length;
	private double width;
	private double height;

	public Juxing(double length, double width, double height) 
	{
		this.length = length;
		this.height = height;
		this.width = width;
	}

	public double print() 
	{
		return length * width * height;

	}
}



class Yuan extends Cx             // 继承抽象类,  圆
{
	double bj;                    // 定义圆的半径

	public Yuan(double radious) 
	{
		this.bj = radious;
	}

	public double print() 
	{
		return Math.PI * bj * bj; 
	}
}

package 第七周;

public class Mianji 
{
	public static void main(String[] args) 
	{
		
		Cx x = new Sanjiaxing(5, 12, 13);
		Cx y = new Juxing(9, 8,7);
		Cx z = new Yuan(6);
		
		System.out.println("边为5, 12, 13的三角形的面积为                 :  " + x.print());
		System.out.println("
长为9、宽为8、高为7 的矩形的面积为  :  " + y.print());
		System.out.println("
半径为6的圆的面积为                           :  " + z.print());
	}
}

实验截图:

错误截图:


改正:一开始不太明白,提示也不太懂,后面参考书上代码才发现定义的抽象方法不合后续,将public abstract double println();改为public abstract double print();就可以了。

正确截图:

(二)使用接口技术

1、定义接口Shape,其中包括一个方法size(),设计“直线”、“圆”、类实现Shape接口。分别创建一个“直线”、“圆”对象,将各类图形的大小输出。

2、编程技巧

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

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

实验代码:

package 第七周;

public interface Shape                                 // 定义接口Shape,其中包括一个方法size()
{ 
	public abstract void size();                       // 定义抽象方法 size()
}

class Zhixian implements Shape                        // 子类实现Shape接口,直线
{
	private double cd;

	public Zhixian(double cd) 
	{
		this.cd = cd;
	}

	public void size()                                 // 覆写Shape接口的抽象方法 
	{ 
		System.out.println("                                   长度为99的直线:

"+"直线的大小:" + cd+"


");
	}
}

class Yuanquan implements Shape                        // 子类实现Shape接口,圆
{
	private double Bj;

	public Yuanquan(double Bj) 
	{
		this.Bj = Bj; 
	}

	public void size() 
	{ 
		System.out.println("                                   半径为4的圆:

圆半径的大小:" + Bj);
		System.out.println("
圆周长的大小:" + Math.PI * Bj * 2);
		System.out.println("
圆面积的大小:" + Math.PI * Bj * Bj);

	}
}
package 第七周;

public class Daxiao 
{
	public static void main(String[] args)
	{
        Shape s1=new Zhixian(99);
        Shape s2=new Yuanquan(4); 
        s1.size();                      //分别调用接口定义的方法
        s2.size();           
    }
}

实验截图:

错误:暂无,基本仿照书本知识点运用。


                                         课程总结

继上周通过 实列分析———宠物商店 已学完抽象类与接口的基本知识点,并且通过熟悉和练习,已经大概学会与理解其各自妙用与区别、各特点的不同。本周则主要学习了Object类的基本作用与其包括的主要方法,我们可以通过学习其已有方法更便捷书写代码。

抽象类与接口:

Object主要方法:

Object类的常用方法


参考:Object

原文地址:https://www.cnblogs.com/youlanghua/p/11653464.html