【Java实验五】继承与多态

news2024/11/26 12:24:20

一、实验一

对于父类的含参构造方法,子类必须通过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;
	}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/4286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot项目的创建(三):手动创建一个Maven工程,然后引入SpringBoot所需的dependency来完成 (不需联网,但复杂)

SpringBoot项目的创建1.配置Maven环境。2.创建一个新的maven项目3.创建出来的目录结构4 继承springboot父项目5.添加Spring Boot Maven插件6.添加spring和web模块的依赖7.创建入口类8.添加代码测试1.配置Maven环境。 在以maven方式创建Spring Boot项目之前,需要先确…

交换网络基础

交换网络基础网络基础交换机的转发行为数据帧分类交换机MAC地址表ping包来回过程VLAN概念:VLAN接口类型ICMP返回值网络基础 路由器:基于3层路由表转发交换机:基于2层MAC地址表转发,数据帧转发 交换机的转发行为 泛洪&#xff1…

Buffer Pool Size of Total RAM No data

1.问题描述 1)问题现象 通过prometheus监控mysql实例和服务器,使用grafana做可视化展示,grafana 中添加 7362 号dashboard 作为mysql看板,添加 11074 号dashboard 作为主机看板。但是添加后查看 MySQL Overview 看板发现 Buffer Pool Size …

Python制作GUI学生管理系统毕设,大学生总会用得到

有很多可爱的大学生跟我吐槽: 咋这个大学跟我想象的不一样呢? 老师叫我们自己做… 还是那句话,技术才是硬道理 源码、资料电子书文末名片获取 有个经典案例就是 学生管理系统 写完了放在那也是放着,所以今天分享给大家吧&…

2022第四届长安杯复盘

容器加挂密码:2022.4th.changancup! 案件背景: 某地警方接到受害人报案称其在某虚拟币交易网站遭遇诈骗,该网站号称使用”USTD币“购买所谓的"HT币”,受害人充值后不但 “HT币”无法提现、交易,而且手机还被恶意…

PID算法

目录 一、PID算法 二、模拟PID 模拟PID调节器的控制规律为 模拟PID调节器的传递函数为 三、数字PID P控制 PI控制 PD控制 PID控制 数字PID增量型控制算式 PID位置型控制算式 一、PID算法 PID控制是最早发展的自动控制策略之一,是微机化控…

C++ opencv图像存储和MAT容器

1.图像在内存之中的存储方式: 图像矩阵的大小取决于所用的颜色模型,确切说,取决于所用通道数。如果是灰度图像,矩阵就会如图5.1所示。 对于多通道图像来说,矩阵中的列会包含多个子列,其子列个数与通道数相同&#xf…

【运筹优化】结合天际线启发式的蚁群算法求解二维矩形装箱问题 + Java代码实现

文章目录一、天际线启发式二、蚁群算法结合天际线启发式2.1 构建序列2.1.1 思路一2.1.2 思路二2.1.3 思路N三、Java代码实现3.1 项目结构3.2 Ant3.3 ACO3.4 Run3.5 运行结果展示3.5.1 思路一3.5.2 思路二3.5.3 思路N四、小结一、天际线启发式 关于天际线启发式的介绍请看我的另…

推荐算法---矩阵分解

矩阵分解报告 1. 试验介绍 矩阵分解就是把原来的大矩阵,近似的分解成小矩阵的乘积,在实际推荐计算时不再使用大矩阵,而是使用分解得到的两个小矩阵。具体来说就是,假设用户物品的评分矩阵R是m乘n维,即一共有m个用户&…

Redis资料整理

Redis--->是非关系型数据库(也称缓存数据库),是一种NoSQL数据库 存放5种数据类型 String key-value形式 另外list,set,zset,hash 另外两种不常用的:bitmap(位图类型),geo(地理位置类型),另外Redis5.0新增 stream类型 相对来说Redis适合存放少数据量的数据,如果需要存放…

BERT知识蒸馏TinyBERT

1. 概述 诸如BERT等预训练模型的提出显著的提升了自然语言处理任务的效果,但是随着模型的越来越复杂,同样带来了很多的问题,如参数过多,模型过大,推理事件过长,计算资源需求大等。近年来,通过模…

PX4基本配置

目录 下载固件 下载原生稳定版固件 安装PX4 Master, Beta或自定义固件 FMUv2 Bootloader 更新 机架设置 飞行控制器/传感器方向 计算朝向 设置朝向 罗盘校准 执行校准 陀螺仪校准 # 执行校准 加速度计 执行校准 空速计校准 执行校准 水平平面校准 执行校准 …

Spring Cloud Zookeeper 升级为Spring Cloud Kubernetes

这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党 背景 现有的微服务是使用的Spring Cloud Zookeeper这一套,实际应用在Kubernetes中部署并不需要额外的注册中心,本身Kubernetes自己就支持…

10道不得不会的 Java容器 面试题

博主介绍: 🚀自媒体 JavaPub 独立维护人,全网粉丝15w,csdn博客专家、java领域优质创作者,51ctoTOP10博主,知乎/掘金/华为云/阿里云/InfoQ等平台优质作者、专注于 Java、Go 技术领域和副业。🚀 最…

FFmpeg内存IO模式

ffmpeg 支持从网络流 或者本地文件读取数据,然后拿去丢给解码器解码,但是有一种特殊情况,就是数据不是从网络来的,也不在本地文件里面,而是在某块内存里面的。 这时候 av_read_frame() 函数怎样才能从内存把 AVPacket…

TensorFlow的GPU使用相关设置整理

前言 TensorFlow是一个在机器学习和深度学习领域被广泛使用的开源软件库,用于各种感知和语言理解任务的机器学习。 默认情况下,TensorFlow 会映射进程可见的所有 GPU(取决于 CUDA_VISIBLE_DEVICES)的几乎全部内存。这是为了减少内…

国考省考行测:问题型材料主旨分析,有问题有对策,主旨是对策,有问题无对策,要合理引申对策

国考省考行测:问题型材料主旨分析,有问题有对策,主旨是对策,有问题无对策,要合理引申对策 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能,附带行测和申论,而常规国考…

【Linux】Linux背景、环境的搭建以及用XShell实现远程登陆

目录Linux 背景Linux环境搭建Linux远程登陆Linux 背景 肯尼斯蓝汤普森最早用汇编语言创建了UNIX系统,后来与他的好“基友”丹尼斯里奇(C语言之父),他们两个一同用C语言重新写了UNIX系统,但是操作系统的使用是需要收费…

ActiveState Platform - November 2022

ActiveState Platform - November 2022 ActiveState平台定期更新新的、修补的和版本化的软件包和语言。 Python 3.10.7、3.9.14、3.8.14-解决了许多安全问题的点发布。 Python C库-ibxml 2.10.3、libxslt 1.1.37、libexpat 2.4.9、zlib 1.2.13、curl 7.85.0和sqlite3 3.39.4&am…

Python添加水印简简单单,三行代码教你批量添加

环境使用: Python 3.8Pycharm 如何配置pycharm里面的python解释器? 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)点击齿轮, 选择add添加python安装路径 pycharm如何安装插件? 选择file(文件) …