当前位置:网站首页>关于继承
关于继承
2022-07-13 17:59:00 【柠ning】
继承是JAVA对象面向对象的三大特性之一,即子类可以继承父类的属性和方法,从而使子类对象具有父类的特征和行为。
继承的原理:以动物为例子,动物可分为食肉动物,食草动物,杂食动物,我们可以去思考它们是否具有相同的特征,比如都有腿,眼睛,能够去进食等相同属性和方法,我们完全可以用一个父类去进行归纳总结,而不必去为每个动物单独设置共同的属性和方法,大大减少了工作量,极大的提高了效率。
继承的关键字为extends,通过它确定了子类与父类的关系
具体用法:public class 子类 extends 父类{},当然继承的前提是父类存在。
子类继承父类也是有要求的,与权限有关,权限符号:public(公共的),protected(受保护的),private(私有的),缺省的。
public:在整个项目下可以使用。
protected:同一个包下以及子类类中。
private:在本类中使用,只能自己使用。
缺省的:通常是不写的,同一个包内可以使用
子类继承父类的好处在于,减少了代码的代码量,不需要反复去写。另外在工作的时候,如果需要添加功能或者是修改,主要修改父类就可以了。不好的地方也是有的,假如父类错了,那么整个项目自然而然就出错了,牵一发而动全身。
- 注意:
- 子类不能选择性继承父类;
- 子类只能继承一个父类,但是可以声明多个接口
- 构造方法不会被子类去继承,但可以在子类中去调用父类的构造方法。
重写是子类非常重要的方法,重写父类的方法具有与父类方法相同的名称,参数数量,方法类型和方法,大概只有参数值可以不同了,哈哈。(如果在重写父类的方法之后,还要调用父类的方法,使用super.就可以了。
来简单举一个例子,相信大家都玩过游戏,游戏人物都会有自己的一些属性和行为,类似于生命值,攻击等等。
首先建立一个父类
public class hero {
String nameId;
int ad;
int lv;
int hp;
}
父类可以看作为一个公共类,现在去建立几个子类
import game0331.hero;
public class HouYi extends hero {
public void ack_q(hero h){
int num = (int) (400 + ad * 0.8 + lv * 20);
h.hp -= num;
System.out.println(nameId + "攻击了" + h.nameId + "使其失去了" +
num + "点生命值,其还剩下" + h.hp
);
}
}
import game0331.hero;
public class LuBan extends hero {
public void ack_q(hero h){
int num = (int) (400 + ad * 0.8 + lv * 20);
h.hp -= num;
System.out.println(nameId+ "攻击了" + h.nameId+ "使其失去了" +
num + "点生命值,其还剩下" + h.hp);
}
}import game0331.hero;
public class ZhangFei extends hero {
public void ack_q(hero h){
int num = (int) (400 + ad * 0.8 + lv * 20);
h.hp -= num;
System.out.println(nameId+ "攻击了" + h.nameId+ "使其失去了" +
num + "点生命值,其还剩下" + h.hp);
}
}别忘了还需要设置一个主类,用以运行。
import game0331.HouYi;
import game0331.LuBan;
public class PK {
public static void main(String args[]){
HouYi HY=new HouYi();
ZhangFei ZF=new ZhangFei();
HY.nameId="后羿";
HY.hp=4000;
HY.ad=10;
HY.lv=10;
ZF.nameId="张飞";
ZF.ad=10;
ZF.hp=3400;
ZF.lv=10;
HY.ack_q(ZF);
ZF.ack_q(HY);
LuBan LB=new LuBan();
LB.nameId="鲁班";
LB.ad=40;
LB.hp=5000;
LB.lv=10;
LB.ack_q(HY);
LB.ack_q(ZF);
}
}
运行效果图如下

基本就是这样了。
边栏推荐
- 史上最快上手Redis(附加连接云服务器上的Redis)
- 简单秒杀项目简介
- [go language introduction] 13 go language interface details
- RT_ Use of thread mutexes
- Théorie de la distribution
- Dark horse database notes DQL
- 一盏茶的功夫我学会了JWT单点登录
- SSM图书管理系统
- [introduction to go language] 14 go language goroutine and channel details
- CPU and memory usage are too high. How to modify RTSP round robin detection parameters to reduce server consumption?
猜你喜欢

IIC communication

Redis is the fastest to get started in history (attach redis on ECs)

支付宝电脑网站支付

将字符串s1中所有出现在字符串s2中的字符删除

Get started elasticsercher
![[hbuilderx development uniapp] automatic code formatting plug-in installation and configuration](/img/84/b32cd4e4a63a040a0edca961fe4d89.png)
[hbuilderx development uniapp] automatic code formatting plug-in installation and configuration

LeetCode 刷题 第五天

LeetCode 刷题 第八天

SSM integration (Reference Version)

Rtthread creation of thread
随机推荐
Simple thread example - running Lantern - stack space allocation skills
LeetCode 第十八天
三分钟上手Markdown——基本语法快速入门
[introduction to go language] 12 go language structure (struct) detailed explanation
Go秒杀系统3--Work模式,Publish模式
学完C语言能干啥?先来做个推箱子吧~(有图片呦)
简单的监听器
js知识点
四舍五入,向下取整,向上取整的使用
[Go语言入门] 06 Go语言循环语句
Implementation of array flattening
Pyopencv basic operation guide
数据库黑马笔记DDL
秒杀活动开发
黑马数据库笔记DCL
数据库黑马笔记DML
Excel-2
LeetCode 刷题 第十二天 + DL第一天
商品模块开发
Experience of using voice chip jq8400