java类的继承,接口,抽象类总结
1. 类的继承
类和类之间可以实现继承关系,即从一个类中继承它的部分属性和部分方法,避免重写代码,提高了代码的重用性。比如武侠小说,言情小说,玄幻小说都属于小说,拥有小说所拥有的属性。继承的格式是public class A extends B,即A继承自B,A称为子类,B称为父类。
子类能用父类的那些方法呢?如果子类和父类同一个文件夹下,则除私有的属性和方法外,其他都能被调用;如果子类父类不同文件夹,但对象在子类外去调用方法,只有公有的方法和属性能被调用;如果不同文件夹下,但是在子类中调用,则公有的和受保护的都能被调用。
2. 方法的重写
如果子类和父类中的方法名字,访问修饰符,返回值和参数值完全相同,则可进行方法重写。方法重写后在子类建立对象之后会优先调用子类上写的方法。
3. 自动转型
实例化对象时候可以这么写
父类名 对象名 = new 子类名();
即父类自动转型为子类;
如果方法在父类里面找不到,则会编译错误。
第一步,public 返回值类型 方法名(父类 父类名)
第二步, 父类 类名=new 子类名(参数。。。);
或者 子类 类名=new 子类名(参数);
第三步,方法名 .方法(子类);
4. interface 接口
接口与类相似,只包含常量和抽象方法。目的是指明多个对象的共同方法。
Public interface 接口名
{
Public static final 数据结构 常量名= 常量;//static final。。。。
Public abstract 返回值类型 方法名(参数…..);//abstract
}
接口中默认的修饰符是public
接口可以继承接口,且可以继承多个接口
接口内的方法只能在类中具体实现
Public class 类名 implements 接口,。。。。。。{
接口中所有的抽象方法必须能得到实现
}
5. 抽象类
Public abstract 抽象类名
{
能定义类中所有的属性,方法;
能定义接口中所有的抽象方法,常量;但定义抽象方法时候必须加abstract。
}
抽象类,接口,类只有类可以实例化对象。
练习实例:角色扮演类战斗,怪物和英雄都是Role的子类
Role class :
public class Role { private String name; private int blood,attack,defense; private int speed; public void setName(String name) { this.name=name; } public String getName() { return name; } public void setBlood(int blood) { this.blood=blood; } public void setAttack(int attack) { this.attack=attack; } public void setDefense(int defense) { this.defense=defense; } public void setSpeed(int speed) { this.speed=speed; } public int getBlood() { return blood; } public int getAttack() { return attack; } public int getDefense() { return defense; } public int getSpeed() { return speed; }}
Monster class :
public class Monster extends Role{ public void NormalAttack(Hero hero) { int a,b; a=hero.getBlood()-(int)(0.8*getAttack()+hero.getDefense()); b=(int)(0.8*getAttack()-hero.getDefense()); hero.setBlood(a); System.out.println(getName()+"攻击了"+hero.getName()+",使之掉了"+b+"血量"); System.out.println("英雄血量剩余"+hero.getBlood()); } public void Vampire(Hero hero) { int a,b,c; a=hero.getBlood()-(int)(0.8*getAttack())+hero.getDefense(); c=(int)(0.8*getAttack())-hero.getDefense(); hero.setBlood(a); b=(int)(c*0.8); setBlood(getBlood()+b); System.out.println(getName()+"吸取了"+b+"血量,对"+hero.getName()+"造成"+c+"伤害"); System.out.println("英雄血量剩余"+hero.getBlood()+",怪物血量剩余"+getBlood()); }}
Hero class:
public class Hero extends Role{ public void Whirlwind(Monster monster) { int a,b; a=monster.getBlood()-(int)(1.4*getAttack())+getDefense(); monster.setBlood(a); b=(int)(1.4*getAttack())-getDefense(); System.out.println(getName()+"使用旋风斩攻击"+monster.getName()+"使之掉血"+b); System.out.println("怪物血量剩余"+monster.getBlood()); } public void Recovery() {
setBlood(getBlood()+150); System.out.println(getName()+"使用圣光术,恢复了150生命值"); System.out.println("英雄血量剩余"+getBlood()); } public void NormalAttack(Monster monster) {
int a,b; a=monster.getBlood()-(int)(0.8*getAttack()+monster.getDefense()); b=(int)(0.8*getAttack()-monster.getDefense()); monster.setBlood(a); System.out.println(getName()+"使用普通攻击,"+monster.getName()+"损失"+b+"血量."); System.out.println("怪物血量剩余"+monster.getBlood()); }}
Fight class:
import java.util.*;public class Fight {
/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Hero hero=new Hero(); Monster monster=new Monster(); hero.setName("英雄"); monster.setName("怪物"); hero.setBlood(3000); monster.setBlood(2800); hero.setAttack(500); monster.setAttack(450); hero.setDefense(150); monster.setDefense(100); hero.setSpeed(40); monster.setSpeed(35); Random ran1=new Random(); Random ran2=new Random(); //System.out.println("请输入你想扮演的角色,1英雄,2怪物"); //Scanner num=new Scanner(System.in); //int choose=num.nextInt(); int i; //if(choose==1) //{ for(i=1;i>=0;i++) { System.out.println(" fight "+i); //System.out.println("您的角色有以下技能:1.旋风斩 2圣光术 3普通攻击"); if(hero.getSpeed()>monster.getSpeed()) { int value1=ran1.nextInt(3); int value2=ran2.nextInt(2); switch(value1) { case 0: hero.Whirlwind(monster);break; case 1: hero.Recovery();break; case 2: hero.NormalAttack(monster);break; } if(hero.getBlood()<=0 || monster.getBlood()<=0) break; switch(value2) { case 0: monster.Vampire(hero);break; case 1: monster.NormalAttack(hero);break;
} if(hero.getBlood()<=0 || monster.getBlood()<=0) break; } } if(hero.getBlood()>monster.getBlood()) System.out.println("英雄获胜"); else System.out.println("怪物获胜");
//}
}
}
java类的继承,接口,抽象类总结相关推荐
- 类封装继承接口抽象类综合测试
第一题 1.定义一个学生类型 1)有姓名,年龄,所在班级,c成绩,html成绩,java成绩这几个属性 2)有一个输出自己信息的方法 3)有一个输出总成绩的方法 要求:用该学生类型定义两个学生变量,并 ...
- 第二十八节:Java基础-进阶继承,抽象类,接口
前言 Java基础 - 进阶继承,抽象类,接口 进阶继承 class Stu {int age = 1; } class Stuo extends Stu {int agee = 2; } class ...
- Java中定义抽象类Shape,其中包含抽象方法double getPeremeter( )求周长和double getArea( )求面积。 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法。
Java中定义抽象类Shape,其中包含抽象方法double getPeremeter( )求周长和double getArea( )求面积. 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法, ...
- Java类的继承总结
本文主要是讲述Java类的继承,更多Java技术知识,请登陆疯狂软件教育官网.加疯狂软件官方微信号:fkitorg,免费赢大奖,有机会赢得iOS培训课程一套. 在 ...
- JAVA 类的继承(私有属性、自动转型)(入门级小白一看就懂)
JAVA 类的继承 文章目录 JAVA 类的继承 概述 1. 类的继承 1.1 引言 1.2 继承的定义 1.3 继承的规则 1.4 继承的格式 1.5 类的继承实例分析 2 私有属性 3 自动转型 ...
- java 类继承实例_java继承例子代码,java类的继承示例
下面要给大家带来的是一个java类的继承的例子,一起来看看详细的代码吧! 一.题目 1.定义一个Person类,这个类的属性有三个,分别是name.age.color. 类有构造方法给三个属性赋值. ...
- JAVA类的继承 Teacher和Student
JAVA类的继承 Teacher和Student 题目描述 定义一个Teacher类和一个Student类,二者有部分数据成员是相同的,例如num,name,sex. 学生有分数score,而教师有薪 ...
- Java面向对象(继承、抽象类)
面向对象 今日内容介绍 u 继承 u 抽象类 第1章 继承 1.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成 ...
- java面向对象基础——继承、抽象类
一.继承 1.继承概述 为什么会有继承? 现实生活中,为什么要有继承? 程序中,为什么要有继承? 继承的含义 继承:在java中指的是"一个类"可以"继承自"& ...
最新文章
- 创始人爆料!被谷歌收购前,DeepMind 已濒临破产
- VARCHART XGantt—世界级甘特图大师
- 一篇搞定RSA加密与SHA签名|与Java完全同步
- php成品网站安装,PHPweb成品网站安装环境要求和安装方法
- JavaScript-12(脚本化CSS)
- 数据可视化大屏案例系列 1
- 听课记录高中计算机,高中听课记录
- 用Form 表单认证实现单点登录(Single Sign On) 作者:寒羽枫(cityhunter172)
- 2021年美国对中国货物出口情况:美对中的出口额达到1492亿美元,同比增长21.30% [图]
- 喝杯水都能泄露指纹?屏下指纹识别设备被攻破
- 教程篇(5.4) 03. FortiManager 设备注册 ❀ Fortinet 网络安全专家 NSE5
- 软件开发方法论:TDD、BDD、DDD、ATDD、DevOps
- python性能分析与优化
- Abaqus 实体平移和旋转
- 【c#系列】PDF进行操作-浏览、分割、合并、插入、删除(1)
- android java pbo_Android OpenGL ES 3.0 PBO而不是glReadPixels()
- [转]从IIC实测波形入手,搞懂IIC通信
- 董军宇教授应邀在中国计算机应用大会智慧海洋分论坛做报告
- kddcup99预处理matlab,KDD CUP99数据集预处理
- 10000+ppt免费下载领取(python爬取全站ppt)
热门文章
- 讲给后台程序员看的前端系列教程(19)——CSS的层叠性与继承性以及优先级
- 一张照片就能攻破人脸识别系统,人脸识别安全性亟需提高
- PDF办公技巧之PDF怎么删除其中一页
- MFC中afx_msg
- 用计算机怎么打出箭头,电脑左箭头怎么打出来(电脑键盘怎么打符号)
- 红米5a android 版本,#MIUI#关于红米手机4高配版 Android版本适配的说明【miui9吧】_百度贴吧...
- 【AI产品】认猫、认花、认车、认吃,请认准识别全能王
- 易代账好会计zip导入提示不平衡
- 让windows保持常亮(不息屏,不锁屏,不进入屏保)
- 在python中、int表示的数据类型是_python--002--数据类型(int、str)