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.定义一个学生类型 1)有姓名,年龄,所在班级,c成绩,html成绩,java成绩这几个属性 2)有一个输出自己信息的方法 3)有一个输出总成绩的方法 要求:用该学生类型定义两个学生变量,并 ...

  2. 第二十八节:Java基础-进阶继承,抽象类,接口

    前言 Java基础 - 进阶继承,抽象类,接口 进阶继承 class Stu {int age = 1; } class Stuo extends Stu {int agee = 2; } class ...

  3. Java中定义抽象类Shape,其中包含抽象方法double getPeremeter( )求周长和double getArea( )求面积。 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法。

    Java中定义抽象类Shape,其中包含抽象方法double getPeremeter( )求周长和double getArea( )求面积. 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法, ...

  4. Java类的继承总结

                       本文主要是讲述Java类的继承,更多Java技术知识,请登陆疯狂软件教育官网.加疯狂软件官方微信号:fkitorg,免费赢大奖,有机会赢得iOS培训课程一套. 在 ...

  5. JAVA 类的继承(私有属性、自动转型)(入门级小白一看就懂)

    JAVA 类的继承 文章目录 JAVA 类的继承 概述 1. 类的继承 1.1 引言 1.2 继承的定义 1.3 继承的规则 1.4 继承的格式 1.5 类的继承实例分析 2 私有属性 3 自动转型 ...

  6. java 类继承实例_java继承例子代码,java类的继承示例

    下面要给大家带来的是一个java类的继承的例子,一起来看看详细的代码吧! 一.题目 1.定义一个Person类,这个类的属性有三个,分别是name.age.color. 类有构造方法给三个属性赋值. ...

  7. JAVA类的继承 Teacher和Student

    JAVA类的继承 Teacher和Student 题目描述 定义一个Teacher类和一个Student类,二者有部分数据成员是相同的,例如num,name,sex. 学生有分数score,而教师有薪 ...

  8. Java面向对象(继承、抽象类)

    面向对象 今日内容介绍 u 继承 u 抽象类 第1章 继承 1.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成 ...

  9. java面向对象基础——继承、抽象类

    一.继承 1.继承概述 为什么会有继承? 现实生活中,为什么要有继承? 程序中,为什么要有继承? 继承的含义 继承:在java中指的是"一个类"可以"继承自"& ...

最新文章

  1. 创始人爆料!被谷歌收购前,DeepMind 已濒临破产
  2. VARCHART XGantt—世界级甘特图大师
  3. 一篇搞定RSA加密与SHA签名|与Java完全同步
  4. php成品网站安装,PHPweb成品网站安装环境要求和安装方法
  5. JavaScript-12(脚本化CSS)
  6. 数据可视化大屏案例系列 1
  7. 听课记录高中计算机,高中听课记录
  8. 用Form 表单认证实现单点登录(Single Sign On) 作者:寒羽枫(cityhunter172)
  9. 2021年美国对中国货物出口情况:美对中的出口额达到1492亿美元,同比增长21.30% [图]
  10. 喝杯水都能泄露指纹?屏下指纹识别设备被攻破
  11. 教程篇(5.4) 03. FortiManager 设备注册 ❀ Fortinet 网络安全专家 NSE5
  12. 软件开发方法论:TDD、BDD、DDD、ATDD、DevOps
  13. python性能分析与优化
  14. Abaqus 实体平移和旋转
  15. 【c#系列】PDF进行操作-浏览、分割、合并、插入、删除(1)
  16. android java pbo_Android OpenGL ES 3.0 PBO而不是glReadPixels()
  17. [转]从IIC实测波形入手,搞懂IIC通信
  18. 董军宇教授应邀在中国计算机应用大会智慧海洋分论坛做报告
  19. kddcup99预处理matlab,KDD CUP99数据集预处理
  20. 10000+ppt免费下载领取(python爬取全站ppt)

热门文章

  1. 讲给后台程序员看的前端系列教程(19)——CSS的层叠性与继承性以及优先级
  2. 一张照片就能攻破人脸识别系统,人脸识别安全性亟需提高
  3. PDF办公技巧之PDF怎么删除其中一页
  4. MFC中afx_msg
  5. 用计算机怎么打出箭头,电脑左箭头怎么打出来(电脑键盘怎么打符号)
  6. 红米5a android 版本,#MIUI#关于红米手机4高配版 Android版本适配的说明【miui9吧】_百度贴吧...
  7. 【AI产品】认猫、认花、认车、认吃,请认准识别全能王
  8. 易代账好会计zip导入提示不平衡
  9. 让windows保持常亮(不息屏,不锁屏,不进入屏保)
  10. 在python中、int表示的数据类型是_python--002--数据类型(int、str)