【Java实验五】继承与多态

一、实验一

对于父类的含参构造方法,子类必须通过super调用,重写父类的构造方法

设计一个应用程序要求:

  • 设计一个表示二维平面上点的类Point,包含有表示坐标位置的protected类型的成
  • 员变量x和y,获取和设置x和y值的public方法。
  • 设计一个表示二维平面上圆的类Circle,它继承自类Point,还包含有表示圆半径
  • 的protected,类型的成员变量r、获取和设置r值的public方法、计算圆面积的一public方法。
  • 设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包含有表示圆柱体高的
  • protected类型的成员变量h、获取和设置h值的public方法、计算圆柱体体积的public方法。
  • 建立若干个Cylinder对象,输出其轴心位置坐标、半径、高及其体积的值。
  • 要求:每个类包含无参数和有参数的构造方法。构造方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为0值。子类的构造方法调用父类的构造方法,对父类中的成员变量初始化。
package text;

import java.util.*;

public class Text {
	public static void main(String[] args) 
	{
		Circle p1=new Circle(0,0,3);
		Cylinder p2=new Cylinder(2,2,4,3.2);
		System.out.println("圆心坐标:("+p1.get_x()+","+p1.get_y()+")");
        System.out.println("圆的半径:"+p1.get_r());
        System.out.println("圆的面积:"+p1.cir_area());
        System.out.println();
        System.out.println("圆柱圆心坐标:("+p2.get_x()+","+p2.get_y()+")");
        System.out.println("圆柱底面半径:"+p2.get_r());
        System.out.println("圆柱的高:"+p2.get_h());
        System.out.println("圆柱体积:"+p2.cyl_volume());
	}
}

class Point
{
    protected double x=0;
    protected double y=0;
    
    public Point(double x,double y)
    {
    	this.x=x;
    	this.y=y;
    }
    
    public double get_x()
    {
    	return x;
    }
    
    public double get_y()
    {
    	return y;
    }
}

class Circle extends Point
{
	protected double r=0;
	
	//子类的构造方法调用父类的构造方法
	public Circle(double x,double y,double r)
	{
		super(x,y);
		this.r=r;
	}

	public double get_r()
	{
		return r;
	}
	
	public double cir_area()
	{
		return r*r*3.14159;
	}
}

class Cylinder extends Circle
{
	protected double h=0;
	
	public Cylinder(double x,double y,double r,double h)
	{
		super(x,y,r);
		this.h=h;
	}
	
	public double get_h()
	{
		return h;
	}
	
	public double cyl_volume()
	{
		return h*3.14159*r*r;
	}
}


 

 

二、实验二 

定义一个接口,其中包含一个计算体积的抽象方法calculateVolume(),设计circle和Rectangle两个类都实现接口中的方法calculateVolume(),分别计算球体和长方体的体积。

package text;

import java.util.*;

public class Text {
	public static void main(String[] args) 
	{
		Circle p1=new Circle(3);
		Rectangle p2=new Rectangle(1,2,3);
		System.out.printf("圆的体积:%.3f\n",p1.calculateVolume());
        System.out.println();
        System.out.println("长方体体积:"+p2.calculateVolume());
	}
}

public interface Shape
{
	abstract double calculateVolume();
}

class Circle implements Shape
{
	protected double r=0;
	
	public Circle(double r)
	{
		this.r=r;
	}
	
	public double calculateVolume()
	{
		return 3.0/4*r*r*r*3.14159;
	}
}

class Rectangle implements Shape
{
	protected double a=0,b=0,h=0;
	
	public Rectangle(double a,double b,double h)
	{
		this.a=a;
		this.b=b;
		this.h=h;
	}
	
	public double calculateVolume()
	{
		return a*b*h;
	}
}

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值