分享

Java之Extends和Implements的区别

 LVADDIE 2015-07-31

只要类被定义为(final)就是不能被继承的

Extends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)

  1. 1. public继承
  2. 明显父类public成员在子类中仍然是public,所以子类对象可以调用父类的接口
  3. 2. protected继承
  4. protected继承后,父类public和protected成员都变成子类的protected成员了
  5. 也就是说子类对象无法调用父类的接口,只能将父类的函数当作子类的内部实现
  6. 3. private继承
  7. private继承后,父类public和protected成员都变成子类的private了,它比protected继承更严格。
  8. 也就说这些父类的成员只能被继承一次,再继续继承,父类的成员就不可见了。
  1. class A {
  2. int i;
  3. void f() {}
  4. void A() {} // 构造
  5. }
  6. // B 继承 A
  7. class B extends A {
  8. int j;
  9. void f() {} // 重写
  10. void g() {}
  11. void B() { // 构造
  12. // 调用父类的构造方法
  13. super();
  14. }
  15. }
  16. B b = new B();
  17. b.i // 继承的
  18. b.f() // 重写后的
  19. b.j // 自有的
  20. b.g() // 自有的

Implements 接口实现

Implements是一个类实现一个接口用的关键字,它是用来实现接口中定义的抽象方法

interface接口内部全部是由全局常量和公共抽象方法所组成

对于class而言,extends用于(单)继承一个类(class),而implements用于实现一个接口(interface)

Implements,实现父类,子类不可以覆盖父类的方法或者变量。

即使子类定义与父类相同的变量或者函数,也会被父类取代掉

interface定义一些方法,并没有实现,需要implements来实现才可用

extend可以继承一个接口,但仍是一个接口,也需要implements之后才可用

这样的好处是:架构师定义好接口,让工程师实现就可以了。整个项目开发效率和开发成本大大降低。

  1. // 接口
  2. public interface People {
  3. public void say();
  4. }
  5. public interface People2 {
  6. public void say2();
  7. }
  8. // 等着被实现
  9. public class Chinese implements People, People2 {
  10. public void say() {
  11. System.out.println(" 你好!");
  12. }
  13. public void say2() {
  14. System.out.println(" 你好!");
  15. }
  16. }
  17. People chinese = new Chinese() ;
  18. chinese.say();
  19. chinese.say();

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多