【JAVA学习】类的继承

1、使用继承的原因

     ·提高代码的重用性

     ·提高程序的扩展性


2、JAVA继承的语法格式

      public class 类名(子类、派生类、超类) extends 类名(父类、基类){

                //程序

     }

   【提醒:Java中类的继承是单继承,子类只能继承一个父类】

       现实中可以写为继承的关系举例:

              · 包含关系:   水果<--西瓜/菠萝/桃子……

              · 亲子关系:  双亲<--子女


3、子类从父类中继承的内容:

        子类继承了父类的所有属性和方法

        访问修饰符:限定用户的属性和方法在不同范围下能否使用的标识

      

访问修饰符同类中同包中不同包中不同包但是有继承关系的子类中
private可以不可以不可以不可以
默认可以可以不可以不可以
protected可以可以不可以可以
public可以可以可以可以







        【子类可以定义父类中没有的属性和方法】


4、方法重写

      · 生活中需要方法重写的情况:

                     定义运动器材的使用方法,杠铃、羽毛球、网球、足球……的使用方法与运动器材的使用方法是不一样的。

                     这时,我们需要在子类中进行方法重写。


     · 方法重写条件:

                    a.必须存在继承关系

                    b.子类重写方法时的访问修饰符必须要大于或者等于父类方法的访问修饰符

                    c.子类重写方法时,方法的返回值类型,方法名,参数必须要和父类的完全一致


      ` 怎样调用重写后的方法

                    调用子类中重写后的方法

                    【类名1 对象名 = new 类名2(),对象类型以new后面的类名2为主】


5、练习

      回合制对战游戏:奥特曼A和小怪兽A进行战斗,直到一方的血量为0时结束战斗,输出谁胜利了!
      如果奥特曼A胜利,则奥特曼A和奥特曼B进行战斗,直到一方的血量为0时结束战斗,输出谁胜利了!
      如果小怪兽A胜利,则小怪兽A和小怪兽B进行战斗,直到一方的血量为0时结束战斗,输出谁胜利了!

    【 要求:类中只能出现一个战斗的方法,参数只能有一个】

     Role类:

public class Role {
	  public String name;
      public int blood=100;
      public int power;
      public String state;
   
      public int hurt(int power){
    	  blood-=power;
    	  return blood;
      }
}
  

     ATM类:

public class ATM extends Role{
	public int power=8;
}

    Monster类:

public class Monster extends Role{
	public int power=6;
}

    Fight类:

public class Fight {
       public static void  main(String[] args){
    	      
    	   ATM atm= new ATM();
    	   ATM atm2= new ATM();
    	   Monster mon= new Monster();
    	   Monster mon2= new Monster();

    	   System.out.println("第1轮回合,正在进行——");
    	   System.out.println("ATM1 PK monster1");
    	   while(atm.blood>0 && mon.blood>0){
    		   mon.hurt(atm.power);
    		   System.out.println("Monster1 lost blood:"+atm.power);
    		   atm.hurt(mon.power);
    		   System.out.println("ATM1 lose blood:"+mon.power);
    	   }
    	   if(atm.blood>mon.blood)
    	   {
    		   System.out.println("第1轮回合,"+"ATM1胜利!");
    	       System.out.println("第2轮回合,正在进行——");
    	       System.out.println("ATM1 PK ATM2");
    	       while(atm.blood>0 && atm2.blood>0){
        		   atm2.hurt(atm.power);
        		   System.out.println("ATM2 lose blood"+atm.power);
        		   atm.hurt(atm2.power);
        		   System.out.println("ATM1 lose blood"+atm2.power);
        	   }
    	       if(atm.blood>atm2.blood)
    	    	   System.out.println("第2轮回合,"+"ATM1胜利!");
    	       else
    	    	   System.out.println("第2轮回合,"+"ATM1胜利!");
    	   }
    	   else
    	   {
    		   System.out.println("第1轮回合,"+"ATM1胜利!");
    		   System.out.println("第2轮回合,正在进行——");
    	       System.out.println("monster1 PK monster2");
    	       while(mon.blood>0 && mon2.blood>0){
        		   mon2.hurt(mon.power);
        		   System.out.println("monster2 lose blood"+mon.power);
        		   mon.hurt(mon2.power);
        		   System.out.println("monster1 lose blood"+mon2.power);
        	   }
    	       if(mon.blood>mon2.blood)
    	    	   System.out.println("第2轮回合,"+"monster1胜利!");
    	       else
    	    	   System.out.println("第2轮回合,"+"monster2胜利!");
    	   }
       }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值