接口、内部类、枚举

举报
brucexiaogui 发表于 2021/12/30 01:35:11 2021/12/30
【摘要】 接口、内部类、枚举   模式: 模板模式: 简单工厂模式: 适配器模式: 接口: 一种规范,一种标准 interface 接口名 {} 接口里的成员: 1. 全局变量 : 这里定义的变量,默认是使用 public static final 修饰的 2. 公共的抽象方法 : 默认使用 abstr...

接口、内部类、枚举

 


  
  1. 模式:
  2. 模板模式:
  3. 简单工厂模式:
  4. 适配器模式:
  5. 接口: 一种规范,一种标准
  6. interface 接口名 {}
  7. 接口里的成员:
  8. 1. 全局变量 : 这里定义的变量,默认是使用 public static final 修饰的
  9. 2. 公共的抽象方法 : 默认使用 abstract public 修饰的
  10. 3. 内部类
  11. 特点:
  12. 没有构造方法,不能实例化
  13. 接口和接口之间可以多继承, 接口里全是抽象方法,不能有普通方法
  14. interface IA{
  15. void a();
  16. }
  17. interface IB{
  18. void b();
  19. }
  20. interface IC extends IA,IB
  21. {
  22. //可以把父接口里的方法继承过来
  23. }
  24. 使用接口:
  25. class XXX extends Object implements IC,ID{
  26. //必须全部覆写接口里的方法;
  27. //覆写的时候,要注意覆写规则:("一同两小一大")
  28. //修饰符只能用public
  29. //class XXX implements IC,ID 关系
  30. //实现关系, 也可以说是 继承关系
  31. public void show(){}
  32. }
  33. IC c = new XXX();//多态
  34. c.show();//编译出错,因为在编译器在IC里找不到show方法
  35. c.a();
  36. 内部类:
  37. 外部类: 宿主类
  38. 内部类: 嵌套类
  39. 1. 非静态内部类 : 内部类没有使用 static 修饰, 此时 内部类属于 外部类的一个对象,也就是说创建内部类对象之前应该先创建外部类对象
  40. 外部类 out = new 外部类();
  41. 外部类.内部类 in = out.new 内部类();
  42. 2. 静态内部类 : 内部类使用了 static 修饰,此时内部类属于 外部类,也就说,外部类可以直接调用内部类
  43. 外部类.内部类 in = new 外部类.内部类();
  44. 3. 局部内部类, 在方法里创建类
  45. 4. 局部内部类的一个特殊, 匿名内部类:
  46. 没有名字的局部内部类,只能用一次
  47. 1. 不能是抽象类
  48. 2. 没有构造方法
  49. 创建格式:
  50. new 父类(参数){
  51. //覆写父类的方法
  52. }
  53. new 接口()
  54. {
  55. //覆写接口里的方法
  56. }
  57. 一旦一个方法需要一个对象的时候,而该对象有父类或接口的时候
  58. void useUSB(IUSB usb){
  59. usb.use();
  60. }
  61. useUSB(new IUSB(){
  62. public void use(){
  63. }
  64. });
  65. 创建线程的时候,AWT添加事件的时候,Android添加事件
  66. 枚举:
  67. 声明:
  68. enum 枚举名
  69. {
  70. 对象名(),对象2;//对象必须写在第一行,并且和其他成员使用 分号隔开
  71. 构造方法,默认是 private 修饰的无参构造方法
  72. 对象,默认都是 全局常量 public static final 枚举名 对象 = new 枚举名();
  73. }
  74. 枚举的直接父类: java.lang.Enum类,抽象类
  75. 访问枚举对象: 枚举名.对象 == 枚举名.对象; ?//相等
  76. 对象后面带():
  77. 对象后带{}: 表示该对象是枚举类的匿名内部类对象;
  78. 每个枚举类都有一个静态方法 values().将返回一个枚举类型的一维数组,里面装的是该枚举类的全部对象
  79. enum Gender{
  80. MAN,WOMAN;
  81. }
  82. Gedner[] gs = Gender.values();
  83. 每个枚举类都有一个静态的方法 valueOf(String name);//name严格区分大小写
  84. Gender man = Gender.valueOf("MAN");//
  85. 打印枚举对象的时候,打印出来的是 对象的名;这是因为 java.lang.Enum类覆写了toString方法
  86. public String toString()
  87. {
  88. String ret = super.toString();
  89. switch(this){
  90. case MAN:
  91. ret = "男";
  92. break;
  93. case WOMAN:
  94. ret = "女";
  95. break;
  96. default:
  97. ret="保密";
  98. }
  99. return ret;
  100. }
  101. 枚举的构造方法:
  102. enum Gender{
  103. MAN("男"),WOMAN("女"),NONE("保密");
  104. //默认: private Gender(){};
  105. private String ObjValue;
  106. privte Gender(String value)
  107. {
  108. objValue = value;
  109. }
  110. public String toString()
  111. {
  112. return this.objValue;
  113. }
  114. }
  115. 枚举实现接口:
  116. 有两种写法:
  117. 1. 直接在枚举类里覆写方法
  118. 2. 在枚举类的匿名内部类里覆写;
  119. 枚举实现单例模式:
  120. enum Singleton
  121. {
  122. INSTANCE;
  123. public static Singleton getInstance(){
  124. return INSTANCE;
  125. }
  126. //private Singleton(){}, 默认的
  127. }
  128. //使用反射,都不能在外界创建SIngleton对象;

 

文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/81630749

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。