码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 内部类 成员 静态 局部 匿名


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

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

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

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

    成员内部类:创建对象 先创建外部类对象 再通过外部类对象.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. }

  • 相关阅读:
    如何手撸一个java缓存框架
    数据结构 1、基本概念 动态数组实现
    [附源码]SSM计算机毕业设计亿上汽车在线销售管理系统JAVA
    【数据结构】HashMap 和 HashSet
    【云原生】基于windows环境搭建Docker
    【村长的刷题手册-1】LeetCode刷题笔记,不断总结继续出发
    下面我们将介绍二叉树的一些基本操作,包括创建二叉树、插入节点、查找节点、删除节点、遍历二叉树等
    DXF读写:对齐尺寸标注文字居中、上方的位置计算
    IT老齐的Redis 6实战课
    LayaBox---TypeScript---基础数据类型
  • 原文地址:https://blog.csdn.net/qq_39664934/article/details/125495852
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号