美文网首页
how2j_interface & inherit

how2j_interface & inherit

作者: nonviolence | 来源:发表于2019-06-28 12:44 被阅读0次

    如何设计JAVA的接口

    接口就像是一种约定,就好比我们约定某些英雄是物理系英雄,那么他们就一定能够进行物理攻击.

    物理攻击接口

    创建一个接口 File--New--Interface AD


    创建接口
    package charactor;
    
    public interface AD { // 创建一个物理攻击的接口
            public void physicAttack(); //声明一个physicAttack的方法,但没有方法体
    }
    
    

    设计一类英雄,能够使用物理攻击

    设计一类英雄,能够使用物理攻击,这类英雄在LOL中被叫做AD
    类: ADHero
    继承了Hero类,所以继承了name,hp,armor等属性

    实先了某个接口,就相当于承诺了某种约定

    所以,实现了AD这个接口,就必须提供AD接口中声明的方法physicAttack()
    实现在语法上使用关键字 implements

    package charactor;
    
    public class ADHero extends Hero implementsAD{
    
            @Override
            public void physicAttack(){
                    System.out.println("进行物理攻击")
    
            }
    
    }
    
    
    

    魔法攻击接口

    创建接口 :File-->New-->Interface AP
    声明一个方法magicAttack魔法攻击,但是没有方法体
    是一个空方法

    package charactor;
    public interface AP {
             public void magicAttack();
    }
    

    设计一类英雄,只能够使用魔法攻击

    这类英雄在LOL中被叫做AP
    类:APHero
    继承Hero类,所以继承了name,hp,armor等属性,实现了AP这个接口,就必须提供 AP接口中声明的方法magicAttack()
    实现在语法上使用关键词implements

    package charactor;
    public class APHero extends Hero implements AP{
            @Override
            public void magicAttack(){
                    System.out.println("进行了魔法攻击")
    
            }
    
    }
    
    
    

    设计一类英雄,既能够进行物理攻击,又能进行魔法攻击

    有一种英雄,能够同时进行物理攻击和魔法攻击,比如伊泽瑞尔,皮城女警凯特琳

    package charactor;
    
    // 能够同时进行物理和魔法伤害的英雄
    
    public  class ADAPHero extends  Hero implements AD,AP{
            @Override
            public  void magicAttack(){
                    System.out.println("进行魔法攻击")
            }
            @Override
            public void phyicAttack(){
                    System.out.println("进行物理攻击");
    
            }
    
    }
    

    什么情况下使用该接口

    如上的例子,似乎要接口,不要接口,都一样的,那么接口的意义是什么呢

    学习一个知识点,是由浅入深得进行的。 这里呢,只是引入了接口的概念,要真正理解接口的好处,需要更多的实践,以及在较为复杂的系统中进行大量运用之后,才能够真正理解,比如在学习了多态之后就能进一步加深理解。

    刚刚接触一个概念,就希望达到炉火纯青的学习效果,这样的学习目标是不科学的。

    练习_接口

    设计一个治疗者接口:Healer
    该接口声明有方法:heal()
    设计一个Support类,代表辅助英雄,继承Hero类,同时实现了Healer这个接口

    
    // 创建接口  File-->New-->Interface Healer
    package charactor;
    
    public interface Healer{
            public void heal(); // 接口中声明一个治疗方法
    
    }
    
    
    package charactor;
    
    public class Support extends Hero inplements Healer {
            @Override
            public void heal(){
                    System.out.println("进行了治疗");
    
            }
    
    
    }
    
    
    
    ···
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    相关文章

      网友评论

          本文标题:how2j_interface & inherit

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