Java编程练习之抽象类与抽象方法

使用抽象类和抽象方法时,需要遵循以下原则:

1)在抽象类中,可以包含抽象方法,也可以不包含抽象方法,但是包含了抽象方法的类必须被定义为抽象类;

2)抽象类不能直接被实例化,即使抽象类中没有声明抽象方法,也不能被实例化;

3)抽象类被继承后,子类需要重写抽象类中所有的抽象方法;

4)如果继承抽象类的子类也被声明为抽象类,则可以不用重写子类中所有的抽象方法;

1.创建Shape(图形)类。该类中有一个计算面积的方法,圆形和矩形都继承自图形类,输出图形和矩形的面积。运行效果图:

父类:

package Zaria;
public abstract class Shape {//父类public double l;  //长度public double w; //宽度public double r; //半径public double PI;//πpublic double A; //面积public abstract double calculate(double l,double w);
}

圆形子类:

package Zaria;
import java.text.DecimalFormat;
public class Roundness extends Shape {public double calculate(double PI,double r){A=PI*r*r;DecimalFormat decimalFormat1 = new DecimalFormat("#0.##"); // 设置格式为保留两位小数String formattedNumber1 = decimalFormat1.format(A); // 将数字按指定格式转换成字符串System.out.println("圆形的面积是:"+formattedNumber1);return A;}
}

矩形子类:

package Zaria;
public class Rectangle extends Shape{public double calculate(double l,double w){A=l*w;System.out.println("矩形的面积是:"+A);return A;}}

主类:

package Zaria;
public class Calculate_area {public static void main(String[] args){Shape shape=new Roundness();shape.r=2.6;shape.PI=3.14;System.out.println("r:"+shape.r);System.out.println("PI:"+shape.PI);shape.calculate(shape.PI,shape.r);shape=new Rectangle();shape.w=2;shape.l=2.6;System.out.println("l:"+shape.l);System.out.println("w:"+shape.w);shape.calculate(shape.l,shape.w); }
}

2.创建工厂类,工厂类中有一个抽象的生产方法,创建汽车厂和鞋厂类,重写工厂类中的抽象生产方法,输出汽车厂生产的是汽车,鞋厂生产的是鞋。运行效果如下:

父类:

package Zaria;
public abstract class Factory {public String goods;//产品public abstract void product();
}

子类:

package Zaria;
public class Automobile_factory extends Factory{public void product(){System.out.println("汽车厂生产的是"+goods);}
}

子类:

package Zaria;
public class Shoe_factory extends Factory{public void product(){System.out.println("鞋厂生产的是"+goods);}
}

主类:

package Zaria;

public class ToProduct {

public static void main(String[] args){

Automobile_factory Af=new Automobile_factory();

Af.goods="汽车";

Af.product();

Shoe_factory Sf=new Shoe_factory();

Sf.goods="鞋";

Sf.product();

} }

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BugKu:Flask_FileUpload

Flask_FileUpload 解题思路 查看源码: 编写上传的文件 获得结果 小结 文件上传漏洞: 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,“文件上…

探索ERC20代币:构建您的第一个去中心化应用

下面文章中会涉及到该资源中的代码,如果想要完整版代码可以私信我获取🌹 文章目录 概要整体架构流程技术名词解释ERC20智能合约web3.js 技术细节ERC20合约部署创建前端界面前端与智能合约互连运行DAPP 小结 概要 在加密货币世界中,ERC20代币…

poi-tl的使用(通俗易懂,全面,内含动态表格实现 包会!!)

最近在做项目时候有一个关于解析Html文件,然后将解析的数据转化成word的需求,经过调研,使用poi-tl来实现这个需求,自己学习花费了一些时间,现在将这期间的经验总结起来,让大家可以快速入门 poi-tl的介绍 …

大数据产品有哪些分类?各类里知名大数据产品都有哪些?

随着互联网技术的持续进步和全球数字化转型的推进,我们正处于一个数据爆炸的时代。在这样的大背景下,大数据已经逐渐崭露头角,成为了推动各行各业发展的关键因素和核心资源。大数据不仅仅是指数据的规模巨大,更重要的是它蕴含的价…

Python八股文:基础知识Part2

1. Python中变量的保存和访问 Python中的变量实际上是一个指向对象的引用,每个对象都有一个唯一的标识符(即内存地址)。对于一些不可变对象,如字符串和整数,因为它们的值不可更改,所以当多个变量引用相同的…

彩虹聚合DNS管理系统源码

聚合DNS管理系统可以实现在一个网站内管理多个平台的域名解析,目前已支持的域名平台有:阿里云、腾讯云、华为云、西部数码、CloudFlare。本系统支持多用户,每个用户可分配不同的域名解析权限;支持API接口,支持获取域名…

建造者模式:构造复杂对象的艺术

在面向对象的设计中,建造者模式是一种重要的创建型设计模式,专门用来构建复杂的对象。它主要目的是将对象的构造代码与其表示代码分离,使同样的构建过程可以创建不同的表示。本文将详细介绍建造者模式的定义、实现、应用场景以及优缺点&#…

虚拟货币:数字金融时代的新工具

在数字化时代的到来之后,虚拟货币逐渐成为了一种广为人知的金融工具。虚拟货币是一种数字化的资产,它不像传统货币那样由政府或中央银行发行和监管。相反,虚拟货币通过密码学技术和分布式账本技术来实现去中心化的发行和交易。 虚拟货币的代…

内网通如何去除广告,内网通免广告生成器

公司使用内网通内部传输确实方便!但是会有广告弹窗推送!这个很烦恼!那么如何去除广告呢! 下载: 链接:https://pan.baidu.com/s/1CVVdWexliF3tBaFgN1W9aw?pwdhk7m 提取码:hk7m ID:…

如何进行宏观经济预测

理性预期经济学提出了理性预期的概念,强调政府在制定各种宏观经济政策时,要考虑到各行为主体预期对政策实施有效性的影响,积极促成公众理性预期的形成,从而更好地实现宏观调控的目标。政府统计要深入开展统计分析预测研究&#xf…

享元模式:优化资源利用的高效策略

在面向对象的软件开发中,享元模式是一种结构型设计模式,旨在减少内存使用,通过共享尽可能多的相似对象来提高应用程序的效率。本文将详细介绍享元模式的定义、实现、应用场景以及优缺点。 1. 享元模式的定义 享元模式(Flyweigh…

免费的 ChatGPT 网站(六个)

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、insCode二、讯飞星火三、豆包四、文心一言五、通义千问六、360智脑 现在智能…

PoE 技术

1 PoE 技术产生背景 随着 WLAN 、 VoIP 、网络视频监控等新业务的飞速发展,大量的无线 LAN 访问点、 IP 电话、 IP 网络摄像头等基于 IP 的终端出现在工业现场。这些设备通常数量众多、位置特殊 、 布线复杂、设备取电困难,其实施部署不仅消耗大量人力物力,…

终端界面外观修改

终端界面外观修改 考虑到实验报告等内容截取命令行会出现不清晰现象 所以特意对cmd命令行的界面外观修改方便打印的时候清晰显示内容 流程 1.右键命令行窗口,点击属性 2.点击颜色 3.选择屏幕背景,窗口颜色选择白色 4.选择屏幕文字,点…

【计算机毕业设计】基于Java+SSM的实战开发项目150套(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 🧡今天给大家分享150的Java毕业设计,基于ssm框架,这些项目都经过精心挑选,涵盖了不同的实战主题和用例,可做毕业设计和课程…

SpringCloudAlibaba-整合nacos(二)

目录地址: SpringCloudAlibaba整合-CSDN博客 一、nacos服务部分 1.下载nacos,并执行数据库脚本:nacos-mysql.sql 2.修改配置文件,配置mysql 3.启动nacos ./startup.sh -m standalone 4.访问:http://127.0.0.1:884…

pytest常用钩子函数

1、什么叫钩子函数 在Pytest框架中,钩子函数是一种允许用户扩展或者自定义测试执行过程的机制。钩子函数允许用户在测试的不同阶段插入自定义的代码,以实现特定的行为,操作或处理。这种插入式的机制使得Pytest具有高度的灵活性和扩展性。 如…

苹果全力升级:用专注AI的M4芯片彻底改造Mac系列

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

964: 数细胞

样例: 解法: 1.遍历矩阵 2.判断矩阵[i][j],若是未标记细胞则遍历相邻所有未标记细胞并标记,且计数 实现:遍历相邻所有未标记细胞 以DFS实现: function dfs(当前状态) {if (终止条件) {}vis[标记当前状…

基于深度学习的生活垃圾智能分类系统(微信小程序+YOLOv5+训练数据集+开题报告+中期检查+论文)

摘要 本文基于Python技术,搭建了YOLOv5s深度学习模型,并基于该模型研发了微信小程序的垃圾分类应用系统。本项目的主要工作如下: (1)调研了移动端垃圾分类应用软件动态,并分析其优劣势;分析了深…