• 内部类 成员 静态 局部 匿名


    概念:在一个类的内部再定义一个完整的类

    特点:编译之后可别分生成独立的字节码文件

    内部类可直接访问外部类的私有成员,而不破坏封装

    内部类:成员内部类、静态内部类、局部内部类、匿名内部类

    成员内部类:创建对象 先创建外部类对象 再通过外部类对象.new.内部类类名() 创建内部类对象

    外部类类名.this 引用外部类的当前对象

    1. public class TsetInner {
    2. public static void main(String[] args) {
    3. Outer o1= new Outer(11);
    4. Outer.MemberInner in1= o1.new MemberInner();
    5. in1.method();
    6. Outer o2= new Outer(22);
    7. //Outer.MemberInner in2= o2.new MemberInner();
    8. //in2.method();
    9. }
    10. }
    11. class Outer{
    12. private int a;
    13. public Outer(int a) {
    14. this.a=a;
    15. }
    16. public void m() {
    17. //局部变量
    18. int x= 20;
    19. //局部内部类
    20. class localInner{
    21. }
    22. }
    23. //成员内部类
    24. class MemberInner{
    25. private int a = 33;
    26. public void method() {
    27. int a= 44;
    28. System.out.println(a);//44
    29. System.out.println(this.a);//33
    30. System.out.println(Outer.this.a);//11
    31. }
    32. }
    33. //静态内部类
    34. static class StaticInner{
    35. }
    36. }

    静态内部类:只能访问外部类的静态成员

    局部内部类:作用范围 从定义开始 到代码块结束

    局部内部类不能定义静态成员

    局部内部类可以访问外部类的私有成员 还能访问外部类的局部变量 但是要加final

    1. public class TestTeacher {
    2. public static void main(String[] args) {
    3. Students stu = new Students();
    4. stu.study();
    5. }
    6. }
    7. class School{
    8. //静态的教师教课A和B
    9. public static Teacher getTeacher(int n) {
    10. class TeacherA implements Teacher{
    11. public void teach() {
    12. System.out.println("A");
    13. }
    14. }
    15. class TeacherB implements Teacher{
    16. public void teach() {
    17. System.out.println("B");
    18. }
    19. }
    20. //判断学习安排的老师进行讲课 学生访问不到 只有数值0或1
    21. if(n%2==0)return new TeacherA();
    22. else return new TeacherB();
    23. }
    24. }
    25. class Students{
    26. //学习方法 不能自己在去决定哪个老师来上课
    27. public void study() {
    28. Teacher t=School.getTeacher(0);
    29. t.teach();
    30. }
    31. }
    32. //接口 为了让教师方法都可以去随意调用访问
    33. interface Teacher{
    34. void teach();
    35. }

  • 相关阅读:
    快速看懂(找到)VUE框架的管理系统代码
    【算法随笔:HDU 3333 Turing tree】(线段树 | 离线 | 离散化 | 贪心)
    day04-MQ
    量子计算和量子通信技术
    STM32 PA15/JTDI 用作普通IO,烧录口不能使用问题解决
    个人简历管理系统winform
    Redis Lua Java 随机编号 用户编号
    QoS小结
    聊聊我认为的 “Kotlinic“
    【Flask基础】一,app对象的初始化与静态参数配置
  • 原文地址:https://blog.csdn.net/qq_39664934/article/details/125495852