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


    实验四                                     类的继承
    

    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

  • 相关阅读:
    JVM调试常用命令——jmap、jstat(2)
    JVM调试常用命令——jps、(1)
    线程基础:多任务处理(18)——MESI协议以及带来的问题:volatile关键字
    线程基础:多任务处理(18)——MESI协议以及带来的问题:伪共享
    网络穿透与音视频技术(5)——NAT映射检测和常见网络穿越方法论(NAT检测实践2)
    网络穿透与音视频技术(4)——NAT映射检测和常见网络穿越方法论(NAT检测实践1)
    网络穿透与音视频技术(3)——NAT映射检测和常见网络穿越方法论(NAT检测)
    网络穿透与音视频技术(2)——NAT的概念及工作模式(下)
    成功解决JSP和Servlet的中文乱码问题
    bootstrap心得
  • 原文地址:https://www.cnblogs.com/youlanghua/p/11653464.html
Copyright © 2020-2023  润新知