精华内容
下载资源
问答
  • implements与extends的区别
    2019-05-23 10:50:01

          extends,可以实现父类,也可以调用父类初始化 this.parent();而且可以覆盖父类定义的变量或者函数;这样的好处是:架构师定义好接口,让开发人员实现就可以了,整个项目开发效率和开发成本大大降低。

           implements,实现父类,子类不可以覆盖父类的变量或者函数;即使子类定义与父类相同的变量或者函数,也会被父类取代掉(覆盖)。

           implements是一个类实现一个接口用的 关键字 ,他是用来实现接口中定义的抽象方法。比如:people是一个接口,他里面有say这个方法。public interface people(){ public say();}但是接口没有方法体。只能通过一个具体的类去实现其中的方法体。比如chinese这个类,就实现了people这个接口。 public class chinese implements people{ public say() {System.out.println("你好!");}}

           Extends用于(单)继承一个类(class),而implements用于实现一个接口(interface)。extends 是继承父类,只要那个类不是声明final或者定义为abstract就能继承,JAVA中不支持多重继承,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了。比如:

    class A extends B implements C,D,E(){ //class子类名extends父类名implements接口名
        
    }

           这两种实现的具体使用,是要看项目的实际情况。需要实现,不可以修改就使用 implements;只定义接口需要具体实现,或者可以被修改扩展性好,就用extends。

           若同时用到 extends 和 implements 的时候,extends 必须放在 implements 关键字之前。如 : class A extends B implements C

           

    父类与子类继承关系上的不同:

    class A{
        int i;
        void f(){
            
        }
    }
    
    class B extends A{
        int j;
        void f(){}  //重写方法
        void g(){}
    }
    

    B b=new B();
    b就是子类对象的实例,不仅能够定义自己的属性和方法,也能访问父类的属性和方法。诸如b.i,b.j.b.fn()都是合法的。此时b.f()是B中的f()

    A a=new B();
    a虽然是用的B的构造函数,但经过upcast(向上转型),成为父类对象的实例,不能访问子类的属性和方法。a.i,a.f()是合法的,而a.j,a.g()是非法的。此时访问a.f()是访问B中的f();

    实现过程

    A a = new B(); 这条语句,实际上有三个过程:

    (1) A a;

    将a声明为父类对象,只是一个引用,未分配空间

    (2) B temp = new B();

    通过B类的构造函数建立了一个B类对象的实例,也就是初始化

    (3) a = (A)temp;

    将子类对象temp转换为父类对象并赋给a,这就是向上转型(upcast),是安全的。
    经过以上3个过程,a就彻底成为了一个A类的实例。
    子类往往比父类有更多的属性和方法,上转只是舍弃,是安全的;而下转(downcast)有时会增加,通常是不安全的。

    多态

    a.f()对应的应该是B类的方法f()

    调用构造函数建立实例后,对应方法的入口已经确定了。

    如此一来,a虽被上转为A类,但其中重写的方法f()仍然是B的方法()。也就是说,每个对象知道自己应该调用哪个方法。

    A a1 = new B();

    A a2 = new C();

    a1,a2两个虽然都是A类对象,但各自的f()不同。这正是多态性的体现。

     

    更多相关内容
  • 类的implements与extends区别

    万次阅读 2019-07-28 12:27:23
    implements与extends的主要概念: implements 是实现(多实现) extends 是继承(单继承) 类只可以单继承 但是如果是接口的话(interface关键字修饰的类)就可以实现多继承 这里就是继承了俩个其他的接口(多继承) ...

    implements与extends的主要概念:

    • implements 是实现(多实现)
    • extends 是继承(单继承)

    类只可以单继承
    但是如果是接口的话(interface关键字修饰的类)就可以实现多继承

    这里就是继承了俩个其他的接口(多继承)
    在这里插入图片描述
    如果是类的话就会报错(因为类只可以单继承,再次强调):
    在这里插入图片描述
    但是类可以多实现,把多个interface定义的接口在自己的主体当中实现:

    在这里插入图片描述

    小总结:

    • extends是类用来继承的(只可以单继承)
    • interface定义的接口却可以用extends多继承
    • implements是类用来多实现的,把多个接口定义的内容实现到自己的类中。
    展开全文
  • implements extends区别 extends(继承) 一个新的接口或者类,从父类或者接口继承所有的属性和方法,不可以重写属性,但可以重写方法 接口可以继承接口或类,类只能继承类 implements(实现) 实现,一个...

    implements 与 extends 的区别

    extends(继承)

    一个新的接口或者类,从父类或者接口继承所有的属性和方法,不可以重写属性,但可以重写方法

    接口可以继承接口或类,类只能继承类

    implements(实现)

    实现,一个新的类,从父类或者接口实现所有的属性和方法,同时可以重写属性和方法,包含一些新的功能

    类可以实现接口或类,一个类可以实现多个接口

    示例

    实现(implements)是面向对象中的一个重要概念。一般来讲,一个类只能继承自另一个类,有时候不同类之间可以有一些共有的特性,这时候就可以把特性提取成接口(interfaces),用 implements 关键字来实现。这个特性大大提高了面向对象的灵活性。

    举例来说,门是一个类,防盗门是门的子类。如果防盗门有一个报警器的功能,我们可以简单的给防盗门添加一个报警方法。这时候如果有另一个类,车,也有报警器的功能,就可以考虑把报警器提取出来,作为一个接口,防盗门和车都去实现它:

    interface Alarm {
        alert(): void;
    }
    
    class Door {
    }
    
    class SecurityDoor extends Door implements Alarm {
        alert() {
            console.log('SecurityDoor alert');
        }
    }
    
    class Car implements Alarm {
        alert() {
            console.log('Car alert');
        }
    }
    

    一个类可以实现多个接口:

    interface Alarm {
        alert(): void;
    }
    
    interface Light {
        lightOn(): void;
        lightOff(): void;
    }
    
    class Car implements Alarm, Light {
        alert() {
            console.log('Car alert');
        }
        lightOn() {
            console.log('Car light on');
        }
        lightOff() {
            console.log('Car light off');
        }
    }
    

    参考资料

    https://ts.xcatliu.com/advanced/class-and-interfaces.html

    展开全文
  • implementsextends区别

    千次阅读 2019-03-31 20:16:13
    1.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承, 2.JAVA中不支持多重继承,但是可以用接口来实现,... 比如 class A extends B implementsC,D,E 术语话来说: extends 继...

    1.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,

    2.JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,

    3.继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了 ,

     比如  class A extends B implementsC,D,E   
    

    术语话来说:

     extends 继承类;implements 实现接口。 
    
    
     类和接口是不同的:类里是有程序实现的;而接口无程序实现,只可以预定义方法
     Java也提供继承机制﹐但还另外提供一个叫interface的概念。由于Java的继承机制只能提供单一继承(就是只能继承一种父类别)﹐所以就以Java的interface来代替C++的多重继承。interface就是一种介面﹐规定欲沟通的两物件﹐其通讯该有的规范有哪些。
     如以Java程式语言的角度来看﹐Java的interface则表示:
     一些函数或资料成员为另一些属于不同类别的物件所需共同拥有,则将这些函数与资料成员定义在一个interface中,然后让所有不同类别的Java物件可以共同操作使用之。 
    
     Java的class只能继承一个父类别(用extends关键字),但可以拥有(或称实作)许多interface(用implements关键字)。  
    

    extends和implements有什么不同?

     对于class而言,extends用于(单)继承一个类(class),而implements用于实现一个接口(interface)。  
     interface的引入是为了部分地提供多继承的功能。在interface中只需声明方法头,而将方法体留给实现的class来做。这些实现的class的实例完全可以当作interface的实例来对待。在interface之间也可以声明为extends(多继承)的关系。
    

    注意:一个interface可以extends多个其他interface
    [c-sharp] view plain copy//定义一个Runner接口   public inerface Runner   {     int ID = 1;     void run ();  }   [java] view plain copy//定义一个接口Animal,它继承于父类接口Runner  interface Animal extends Runner  {     void breathe ();  }  [c-sharp] view plain copy//定义Fish类,它实现了Animal接口的方法run()和breather()  class Fish implements Animal  {     public void run ()    //实现了Animal方法run()   {      System.out.println(“fish is swimming”);   }  public void breather()  //实现Animal的breather()方法 {      System.out.println(“fish is bubbing”);      }  }  //定义了一个抽象类LandAnimal,它实现了接口Animal的方法。  abstract LandAnimal implements Animal  {         public void breather ()   {      System.out.println(“LandAnimal is breathing”);   }  }  //定义了一个类Student,它继承了类Person,并实现了Runner接口的方法run()。  class Student extends Person implements Runner  {      …      public void run ()       {            System.out.println(“the student is running”);       }      …  }     //定义了一个接口Flyer  interface Flyer  {     void fly ();  }     //定义了一个类Bird,它实现了Runner和Flyer这两个接口定义的方法。  class Bird implements Runner , Flyer  {     public void run ()   //Runner接口定义的方法run()。      {          System.out.println(“the bird is running”);      }     public void fly ()   //Flyer接口定义的方法fly()。      {          System.out.println(“the bird is flying”);      }  }     //TestFish类  class TestFish  {     public static void main (String args[])      {         Fish f = new Fish();         int j = 0;         j = Runner.ID;         j = f.ID;      }  }   接口实现的注意点:a)实现一个接口就是要实现该接口的所有的方法(抽象类除外)。
    b)接口中的方法都是抽象的。
    c)多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。extends与implements的区别:extends 是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重继承,但是可以用接口来实现,这样就用到了implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了。比如: class A extends B implements C,D,E {}    (class 子类名 extends 父类名 implenments 接口名) 父类A与子类B继承关系上的不同:A a = new B(); 结果a是一个A类的实例,只能访问A中的方法,那么又和A a = new A();有什么区别呢?***********************************************************************************************class B extends A
    继承过后通常会定义一些父类没有的成员或者方法。
    A a = new B();
    这样是可以的,上传。
    a是一个父类对象的实例,因而不能访问子类B定义的新成员或方法。***********************************************************************************************假如这样定义:
    class A{
       int i;
       void f(){}
    }
    class B extends A{
        int j;
        void f(){}       //重写
        void g(){}
    }
    然后:
    B b = new B();
    b就是子类B对象的实例,不仅能够访问自己的属性和方法,也能够访问父类的属性和方法。诸如b.i,b.j,b.f(),b.g()都是合法的。此时b.f()是访问的B中的f()
    A a = new B();
    a虽然是用的B的构造函数,但经过upcast,成为父类对象的实例,不能访问子类的属性和方法。a.i,a.f()是合法的,而a.j,a.g()非法。此时访问a.f()是访问B中的f()***********************************************************************************************A a = new B(); 这条语句,实际上有三个过程:
    (1) A a;
    将a声明为父类对象,只是一个引用,未分配空间
    (2) B temp = new B();
    通过B类的构造函数建立了一个B类对象的实例,也就是初始化
    (3) a = (A)temp;
    将子类对象temp转换为父类对象并赋给a,这就是上传(upcast),是安全的。
    经过以上3个过程,a就彻底成为了一个A类的实例。
    子类往往比父类有更多的属性和方法,上传只是舍弃,是安全的;而下传(downcast)有时会增加,通常是不安全的。***********************************************************************************************a.f()对应的应该是B类的方法f()
    调用构造函数建立实例过后,对应方法的入口已经确定了。
    如此以来,a虽被上传为A类,但其中重写的方法f()仍然是B的方法f()。也就是说,每个对象知道自己应该调用哪个方法。
    A a1 = new B();
    A a2 = new C();
    a1,a2两个虽然都是A类对象,但各自的f()不同。这正是多态性的体现。

    展开全文
  • Java implementsextends区别

    千次阅读 2020-03-30 13:37:54
    Java implementsextends区别 implements 关键字implements是一个类,实现一个接口用的关键字,它是用来实现接口中定义的抽象方法。实现一个接口,必须实现接口中的所有方法。使用 implements 关键字可以变相地...
  • 体会extends与implements区别
  • extends implements区别

    千次阅读 2021-07-28 09:22:41
    JAVA中extends 与implements有啥区别? 在类的声明中,通过关键字extends来创建一个类的子类。一个类通过关键字implements声明自己使用一个或者多个接口。 extends 是继承某个类, 继承之后可以使用父类的方法, 也...
  • 说说java中extends与implements区别

    千次阅读 2022-06-29 11:37:38
    一、extends表示继承(扩展),只能继承不是声明为final或不是定义为abstract的类,并且只能继承 一个父类(不像C语言可以继承多个),继承后可以使用父类的方法,也可以重写父类的方法、写自己的方法。二、 ...
  • extendsimplements区别

    千次阅读 2019-01-27 14:54:34
    首先需要记住的是extends表示继承关系、implements表示实现关系 那么extends用于哪些情形、implements又用于哪些情形呢?   extends: 子类(class) extends 父类(class)===>继承类只能是单继承,也...
  • java之implementsextends

    2022-06-10 10:41:40
    在Java中不允许多继承 extends extends 关键字直接跟在子类名之后,其后面是该类要继承的父类名称 语法如下: class 子类 extends 父类 {} extendsimplements区别: 1、在类的声明中,通过关键字extends来创建一...
  • 记录implements与extends

    2022-02-24 20:40:41
    extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,会覆盖父类定义的变量或者函数 ...class A extends B implements C,D,E extends是继承类,implements是实现接口。 ...
  • java中extends与implements区别浅谈,需要的朋友可以参考一下
  • 继承会涉及两个关键词(keyword)“extends”和“implements”。 extends class A extends B {...} 在Java中,extends表明正在定义的这个A类是利用继承,从基类B中派生的。所以extends用来把父类B的功能扩展给子类A...
  • Java:extendsimplements区别

    千次阅读 2021-04-14 13:55:45
    (1)extends与implements的不同 1、在类的声明中,通过关键字extends来创建一个类的子类。一个类通过关键字implements声明自己使用一个或者多个接口。 extends 是继承某个类, 继承之后可以使用父类的方法, 也可以...
  • 1.首先从flutter的三种类型定义讲起:class(类)、abstract class(抽象类)、 Mixin(混入) dart里面没有接口的类型,同时也...2.dart的with、implementsextends extends:能重写父类属性或者方法,同时能通过super
  • TypeScript 中的 implementsextends

    千次阅读 2021-09-01 14:35:24
    类和接口 常见的面向对象语言中,接口是不能继承类的,但是在 TypeScript 中可以。...extends(继承)和 implements(实现) 因为类可以作为接口使用,或者说因为类同时实现了接口,所以 TypeScript 中可以有如
  • java继承(implements与extends)总结

    万次阅读 多人点赞 2018-04-23 21:40:20
    关键字implements是一个类,实现一个接口用的关键字,它是用来实现接口中定义的抽象方法。实现一个接口,必须实现接口中的所有方法。...(1)接口可以被多重实现(implements),抽象类只能被单一继承(extends) ...
  • Java中implementsextends区别

    千次阅读 2021-03-05 17:42:39
    看到java中很多类有使用implementsextends,那么这两种用法有哪些区别呢,今天我们来分析一下。简单说:1.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,2.Java中不支持多重...
  • extends与implements的不同 1、在类的声明中,通过关键字extends来创建一个类的子类。 一个类通过关键字implements声明自己使用一个或者多个接口。 extends 是继承某个类, 继承之后可以使用父类的非私有方法, 也...
  • extendsimplements区别

    千次阅读 2017-04-27 11:18:27
    extends与implements的不同1、在类的声明中,通过关键字extends来创建一个类的子类。 一个类通过关键字implements声明自己使用一个或者多个接口。 extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写...
  • Class属性ExtendsImplements有什么区别,想必很多新手朋友们都不知道吧,下面通过实例为大家详细的介绍下,感兴趣的朋友可不要错过
  • extends 是继承某个类 ,继承之后可以使用父类的方法 ,也可以重写父类的方法。 implements 是实现多个接口,接口的方法一般为空的,必须重写才能使用. extends是继承父类,只要那个类不是声明为final或者那个类...
  • extends 在类的声明中,通过关键字extends来创建一个类的子类。(是继承父类,只要这个类不是声明为final或定义为abstract抽象类就能继承) extends是继承某个类,继承之后可以使用父类的方法,也可以重写父类的方法...
  • 浅谈java中extends与implements区别  Extends可以理解为全盘继承了父类的功能。implements可以理解为为这个类附加一些额外的功能;interface定义一些方法,并没有实现,需要implements来实现才可用。extend可以...
  • Java implements extends总结

    千次阅读 2018-05-24 18:49:50
     (2)接口需要实现(implements),但抽象类只能被继承(extends)。一个类可实现多个接口,但只能继承一个类,接口可借此实现多重继承。  (3)接口:“has-a”,继承:"is-a”  (4)接口中成员默...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 792,540
精华内容 317,016
关键字:

implements与extends的区别