• 内部类概述


    一、内部类

    1.内部类概述

    2.内部类的四种实现形式

    1.成员内部类

    1. public class Outer {
    2. private int age=99;
    3. public static String a;
    4. //成员内部类
    5. public class Inner{
    6. private int age=88;
    7. private String name;
    8. // public static String school; //jdk 16开始才支持定义静态成员变量
    9. public Inner() {
    10. }
    11. public Inner(String name) {
    12. this.name = name;
    13. }
    14. public String getName() {
    15. return name;
    16. }
    17. public void setName(String name) {
    18. this.name = name;
    19. }
    20. public void test(){
    21. int age=66;
    22. //66
    23. System.out.println (age);
    24. //88
    25. System.out.println (this.age);//只能访问内部类中的属性
    26. //99
    27. System.out.println (Outer.this.age);//通过类名.this 访问外部类的属性
    28. }
    29. public void test2(){//成员内部类可以访问外部类的成员变量
    30. System.out.println (a);
    31. System.out.println (age);
    32. }
    33. }
    34. }

    2.静态内部类

    1. public class Outer {
    2. private int age;
    3. public static String schoolName;
    4. //静态内部类
    5. //类有的东西静态内部类都有
    6. public static class inner{
    7. private String name;
    8. public static int a;
    9. public void test(){
    10. //静态内部类可以直接访问外部类的静态成员变量
    11. System.out.println ( schoolName );
    12. //不能直接访问外部类的成员变量
    13. // System.out.println ( age );
    14. }
    15. public String getName() {
    16. return name;
    17. }
    18. public void setName(String name) {
    19. this.name = name;
    20. }
    21. public static int getA() {
    22. return a;
    23. }
    24. public static void setA(int a) {
    25. inner.a = a;
    26. }
    27. }
    28. public static void test2(){
    29. //静态方法可以直接访问自己类的静态成员变量
    30. System.out.println (schoolName);
    31. //age 是对象的成员变量不能直接去访问
    32. // System.out.println ( age );
    33. }
    34. }

    3.局部内部类

    4.匿名内部类

    1.什么是匿名内部类

    2.匿名内部类在开发中的使用场景

    1. public class Test {
    2. public static void main(String[] args) {
    3. Swimming s1=new Swimming (){
    4. @Override
    5. public void swim() {
    6. System.out.println ("狗游泳");
    7. }
    8. };
    9. go (new Swimming (){
    10. @Override
    11. public void swim() {
    12. System.out.println ("狗游泳");
    13. }
    14. } );
    15. go ( s1 );
    16. }
    17. //设计一个方法,可以接受Swimming接口的一切实现类进来参加游泳比赛
    18. public static void go(Swimming s){
    19. System.out.println ("开始----------------");
    20. s.swim ();
    21. }
    22. }
    23. //猫和狗都要参加游泳比赛
    24. interface Swimming{
    25. void swim();
    26. }

  • 相关阅读:
    4个独立通道或8非隔离ARINC825接口卡
    FiRa标准——MAC实现(二)
    SpringCloudAlibaba分布式流量控制组件Sentinel实战与源码分析(上)
    【30. 串联所有单词的子串】
    迅为RK3568开发板helloworld 驱动实验-驱动编写
    【Elsevier出版社】网络通信类SCI,仅2-3个月左右录用
    电商技术揭秘三十一:智能风控与反欺诈技术
    算法刷题网站总结
    微信小程序_8,视图与逻辑
    数据治理-大数据与数据科学-定义大数据战略与业务需求
  • 原文地址:https://blog.csdn.net/m0_64703222/article/details/133810940