美文网首页
java萌新入门之类继承

java萌新入门之类继承

作者: 蛤星人丨冬马和纱 | 来源:发表于2017-04-12 17:38 被阅读0次

    1.使用继承的原因:

    提高代码的重用性;提高程序的扩展性。

    2.java继承的语法格式:

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

    }

    注:Java类只能继承一个父类(单继承)。

    3.子类从父类中继承到的属性和方法能否被调用与访问修饰符的关系:

    4.方法重写:

    ① 用途:子类和父类有同一个方法,但需要不同实现时,使用重写。

    ② 重写的条件:1.必须有继承关系;

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

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

    ③ 调用重写后的方法格式:

    根据new关键字后的类名来决定调用的对象是谁的——new关键字后类名是子类,那么会有限调用子类中重写的方法;如果子类没有,则执行父类中的方法。

    ④ 如果想要在子类重写的方法中调用父类中的方法,那么应该如何实现?

    使用super关键字。

    练习

    1.回合制对战游戏:奥特曼迪迦和小怪兽哥斯拉进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!

    如果奥特曼迪迦胜利,则奥特曼迪迦要和另一个奥特曼对象进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!

    如果小怪兽哥斯拉胜利,则小怪兽哥斯拉要和另一个小怪兽对象进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!

    要求是类中只能有一个攻击方法,方法中也只能有一个参数。

    在这一节的练习中。我本来的想法是再创建一个奥特曼2类和小怪兽2类,因为最先写的攻击方法是分别给奥特曼和小怪兽的。比如小怪兽的攻击方法只能是面向奥特曼的。如下所示


    public void attack(OutMan om){

    //被攻击方HP减少2

    om.HP=om.HP-2;

      System.out.println(name+"攻击了奥特曼"+om.name+",对方的血量减少至"+om.HP);

     if(om.HP==0){//判断奥特曼的血量是否为零

      System.out.println(name+"作为小怪兽已经击败了奥特曼"+om.name);

    }

    }


    而建立了怪兽2类就可以使怪兽的攻击能面向小怪兽了。

    然而我这样的想法是错的。因为表面上是达到了需求,实际上增加了类。原有的奥特曼依然不能攻击小怪兽类。

    代码量也很冗长复杂。因为需要重新写两个类和两个新的攻击方法。

    最后明白,达到原题的目的,只需要建立一个大类(Person),和对双方通用的攻击方法,让奥特曼和小怪兽成为Person的子类,去继承过来,这样就解决了。



    public void attack(Person p){

    //被攻击方HP减少

    p.HP--;

    System.out.println(name+"攻击了"+p.name+",对方的血量减少至"+p.HP);

    if(p.HP==0){//判断怪兽的血量是否为零

    System.out.println(name+"已经击败了"+p.name);

    }

    }


    比如奥特曼对于Person的继承:


    package OutMan2;

    public class OutMan extends Person{

    }


    非常的简洁和简练。这使我深刻体会到继承的好处。

    相关文章

      网友评论

          本文标题:java萌新入门之类继承

          本文链接:https://www.haomeiwen.com/subject/jpimattx.html