当前位置:   article > 正文

Android:JAVA语言extends和implements用法的学习_android implements

android implements

Android:JAVA语言extends和implements用法的实例学习


一、extends和implements介绍

1、extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承.
2、JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements.
3、继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了 ;  比如  class A extends B implements C,D,E 4、extends 继承类;implements 实现接口.
5、类和接口是不同的:类里是有程序实现的;而接口无程序实现,只可以预定义方法! 
6、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。  

四、简单的说,extends可以理解为全盘继承了父类的功能; implements可以理解为为这个类附加一些额外的功能; 举个例子,Animal是一个父类,cat,dog,bird,insect都extends了Animal, 但是cat,dog,bird还可以implements比如run,shout,这些interface,bird,insect可以 implements比如fly这些interface;

五、继承过后通常会定义一些父类没有的成员或者方法。

class B extends A
继承过后通常会定义一些父类没有的成员或者方法。
A a = new B();
这样是可以的,上传。
a是一个父类对象的实例,因而不能访问子类定义的新成员或方法。
假如这样定义:
class A{
int i;
void f(){}
}
class B extends A{
int j;
void f(){}//重写
void g(){}
}

六、实例学习。

1、java代码extends_and_implements.java

  1. interface Runner
  2. {
  3. int ID=520111;
  4. void run ();
  5. }
  6. interface Flyer
  7. {
  8. void fly ();
  9. }
  10. interface Shouter
  11. {
  12. void shout();
  13. }
  14. /*
  15. **extends可以理解为全盘继承了父类的功能,不需要重run方法。
  16. */
  17. interface Animal extends Runner
  18. {
  19. int ID=96;
  20. void breathe();
  21. }
  22. class Fish implements Animal
  23. {
  24. int ID=98;
  25. static int fish_id=10;
  26. public void run ()
  27. {
  28. System.out.println("fish is swimming");
  29. }
  30. public void breathe()
  31. {
  32. System.out.println("fish is bubbing");
  33. }
  34. }
  35. class Bird implements Runner , Flyer
  36. {
  37. public void run ()
  38. {
  39. System.out.println("the bird is running");
  40. }
  41. public void fly ()
  42. {
  43. System.out.println("the bird is flying");
  44. }
  45. }
  46. abstract class LandAnimal implements Animal
  47. {
  48. public void breathe()
  49. {
  50. System.out.println("LandAnimal is breathing");
  51. }
  52. }
  53. /*
  54. **********************************************************************************************
  55. ****如果将一个类设置为abstract,则此类必须被继承使用。此类不可生成对象,必须被继承使用。
  56. ****Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性。下面的例子中 FlyAnimal就不需要重写Animal以及Flyer接口中的方法
  57. ****Abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型。
  58. ****Final和abstract永远不会同时出现。
  59. ***********************************************************************************************
  60. */
  61. abstract class FlyAnimal implements Animal , Flyer
  62. //class FlyAnimal implements Animal , Flyer//error,FlyAnimal不是抽象的, 并且未覆盖Runner中的抽象方法run()
  63. {
  64. public void breathe()
  65. {
  66. System.out.println("LandAnimal is breathing");
  67. }
  68. }
  69. /*
  70. **********************************************************************************************
  71. ***抽象类存在的意义是用来被继承的。一个类继承了一个抽象类,必须实现抽象类里面所有的抽象方法,否则,此类也是抽象类。
  72. ***例如下面的swallow燕子类继承FlyAnimal,必须实现抽象类FlyAnimal里面的breathe()和run ()和fly ()方法以及Shouter类里面的shout()方法
  73. ***********************************************************************************************
  74. */
  75. class Swallow extends FlyAnimal implements Shouter
  76. //class Swallow implements FlyAnimal , Shouter//error错误: implements后面需要跟接口
  77. {
  78. public void breathe()
  79. {
  80. System.out.println("Swallow is breathing");
  81. }
  82. public void run ()
  83. {
  84. System.out.println("Swallow is runing");
  85. }
  86. public void fly ()
  87. {
  88. System.out.println("Swallow is flying");
  89. }
  90. public void shout()
  91. {
  92. System.out.println("Swallow is shouting");
  93. }
  94. }
  95. public class extends_and_implements
  96. {
  97. public static void main (String args[])
  98. {
  99. int j = 0;
  100. System.out.println("extends_and_implements class!");
  101. Fish mFish = new Fish();
  102. Swallow m_Swallow=new Swallow();
  103. //Animal mAnimal=new Animal();
  104. //FlyAnimal mFlyAnimal= new FlyAnimal();//错误: FlyAnimal是抽象的; 无法实例化
  105. mFish.run();
  106. System.out.println("mFish.ID="+mFish.ID);
  107. j = Runner.ID;
  108. System.out.println("Runner.ID="+j);
  109. System.out.println("Fish.fish_id="+Fish.fish_id);
  110. Fish.fish_id=20;
  111. System.out.println("Fish.fish_id="+Fish.fish_id);
  112. //Swallow.breathe();//error,错误: 无法从静态上下文中引用非静态 方法 breathe()
  113. m_Swallow.breathe();
  114. }
  115. }
2、编译&执行



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/326872
推荐阅读
相关标签
  

闽ICP备14008679号