Demo01.java 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package course.anonymousInternalClass;
  2. /**
  3. * @author WanJl
  4. * @version 1.0
  5. * @title Demo01
  6. * @description 匿名内部类
  7. * @create 2026/7/27
  8. */
  9. public class Demo01 {
  10. /*
  11. Java中的内部类分为三大类:
  12. 成员内部类:
  13. |-普通成员内部类
  14. |-静态成员内部类
  15. 局部内部类
  16. 匿名内部类
  17. 匿名内部类,顾名思义,就是这个类没有名字,是匿名,一般就是定义之后,直接使用。
  18. 匿名内部类的前提:
  19. 存在一个类或接口,这里的类可以是普通类也可以是抽象类
  20. 匿名内部类的格式:
  21. new 类名(){ // 类名可以是普通父类、抽象父类、或 接口
  22. 重写类的方法。
  23. };
  24. new 接口名(){ // 类名可以是普通父类、抽象父类、或 接口
  25. 重写接口的方法。
  26. };
  27. 匿名内部类的本质是一个继承了某个类或实现了某个接口的【子类的匿名对象】
  28. 匿名内部类可以使用多态的形式来接收
  29. Compute compute = new Compute() {
  30. @Override
  31. public int add(int a, int b) {
  32. return a + b;
  33. }
  34. };
  35. compute.add(15,3);
  36. 匿名内部类直接调用方法
  37. new Compute() {
  38. @Override
  39. public int add(int a, int b) {
  40. return a + b;
  41. }
  42. public void method(){
  43. System.out.println("匿名内部类特有的方法");
  44. }
  45. }.mthod();
  46. 匿名内部类在开发中的使用:
  47. 比如发现某个方法需接口或抽象类的子类对象,我们就可以传递一个匿名内部类过去,来简化传统的代码。
  48. */
  49. public static void main(String[] args) {
  50. //创建Usb接口的匿名内部类
  51. Usb usb=new Usb(){
  52. @Override
  53. public void startUsb() {
  54. System.out.println("启动鼠标");
  55. }
  56. @Override
  57. public void closeUsb() {
  58. System.out.println("关闭鼠标");
  59. }
  60. };
  61. usb.startUsb();
  62. usb.closeUsb();
  63. }
  64. }