zoukankan      html  css  js  c++  java
  • Java之implements

     

    转自:https://blog.csdn.net/android_lover2014/article/details/52176814

     

    JAVA中extends 与implements有啥区别?
    1. 在类的声明中,通过关键字extends来创建一个类的子类。一个类通过关键字implements声明自己使用一个或者多个接口。
    extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法; implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用
    2.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重继承,但是可以用接口 来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了
    比如
    class A extends B implements C,D,E

     

    ===========================================================

     

    ===========================================================
    extends与implements的不同

     extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重 继承,但是可以用接口来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了
    比如
    class A extends B implements C,D,E

     

    //
       一个类通过关键字implements声明自己使用一个或者多个接口。在类的声明中,通过关键字extends来创建一个类的子类。
    class 子类名 extends 父类名 implenments 接口名
    {...

     

    }



    implements 也是实现父类和子类之间继承关系的关键字,如类 A 继承 类 B 写成 class A implements B{}.
     
    implements是一个类实现一个接口用的关键字,他是用来实现接口中定义的抽象方法。比如:people是一个接口,他里面有say这个方法。public interface people(){ public say();}但是接口没有方法体。只能通过一个具体的类去实现其中的方法体。比如chinese这个类,就实现了people这个接口。 public class chinese implements people{ public say() {System.out.println("你好!");}}
     
    接口实现的注意点:
    a.实现一个接口就是要实现该接口的所有的方法(抽象类除外)。
    b.接口中的方法都是抽象的。
    c.多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。
     
    extends与implements的不同
    extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,也可以调用父类初始化 this.parent()。而且会覆盖父类定义的变量或者函数。这样的好处是:架构师定义好接口,让工程师实现就可以了。整个项目开发效率和开发成本大大降低。
        
     JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了。实现父类,子类不可以覆盖父类的方法或者变量。即使子类定义与父类相同的变量或者函数,也会被父类取代掉。 
     
    格式:
    class A extends B implements C,D,E
     一个类通过关键字implements声明自己使用一个或者多个接口。在类的声明中,通过关键字extends来创建一个类的子类。 
    class 子类名 extends 父类名 implenments 接口名 
    {...
     
    }
    若同时用到 extends 和 implements 的时候,extends 必须放在 implements 关键字之前。
     
     
    例子:
     
    这里有一个游戏,人猿泰山。 主角是一个单独的类,这里我们主要用怪物说明接口的用法: 怪物有很多种, 按地域分:有的在天上飞,有的在地上跑,有的在水里游 按攻击方式分:有的能近距离物理攻击,有的能远距离射击 
     
    假设游戏里需要这样的几 种怪—— 
    野狗:地上移动,近距离攻击 
    黑熊:地上移动,近/远距离攻击 
    秃鹫:地上/天上移动,远距离攻击 
    食人鱼: 水中移动,近距离攻击 
    鳄鱼:地上/水中移动,近距离攻击 
     
    显然,如果我们将每一种怪物定义为一个类,那就不是面向对象的程序开 发了,我们应当使用接口: 
    interface OnEarth{//陆地接口 
    int earthSpeed;//陆地移动速度 
    void earthMove();//陆地移动方法 
     
    interface OnWater{//水中接口 
    int waterSpeed;//水中移动速度 
    void waterMove();//水中移动方法 
     
    interface OnAir{//空中接口 
    int airSpeed;//水中移动速度 
    void airMove();//水中移动方法 
     
    interface NearAttack{//近距离攻击接口 
    int nearAttackPower;//近距离攻击力 
    void nearAttack();//近距离攻击方法 
     
    interface FarAttack{//远距离攻击接口 
    int farAttackPower;//远距离攻击力 
    void farAttack();//远距离攻击方法 
     
    这样一来,根据需求,我们可以选择性的继承接口: 
    class Tyke implements OnEarth, NearAttack{//野狗类 
    void earthMove(){//实现继承的方法1 
    void nearAttack(){//实现继承的方法2 
     
    class BlackBear implements OnEarth, NearAttack, FarAttack{//黑熊类 
    void earthMove(){//实现继承的方法1 
    void nearAttack(){//实现继承的方法2 
    void farAttack(){//实现继承的方法3 
     
    class Vulture implements OnEarth, OnAir, FarAttack{//秃鹫类 
    void earthMove(){//实现继承的方法1 
    void airMove(){//实现继承的方法2 
    void farAttack(){//实现继承的方法3 
     
    class ManeatFish implements OnWater, NearAttack{//食人鱼类 
    void waterMove(){//实现继承的方法1 
    void nearAttack(){//实现继承的方法2 
     
    class Crocodile implements OnEarth, OnWater, NearAttack{//鳄鱼类 
    void earthMove(){//实现继承的方法1 
    void waterMove(){//实现继承的方法2 
    void nearAttack(){//实现继承的方法3 
  • 相关阅读:
    离职or not 离职
    RelativeLayout总结
    MVC中小试了一下Jquery
    tricks about andor in python
    【回旋数字】c语言实现
    退役?
    HDU4546 比赛难度
    WEB页面导出为EXCEL文档的方法
    开始→运行→命令
    控制Repeater显示列数
  • 原文地址:https://www.cnblogs.com/yangf428/p/11066371.html
Copyright © 2011-2022 走看看