码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java面向对象10——内部类知识点总结


    内部类

    • 一、前言
    • 二、内部类定义
    • 三、内部类简单应用
    • 四、内部类特点
    • 五、内部类分类
    • 六、成员内部类
      • 1.书写
      • 2.创建成员内部类对象
      • 3.获取外部类成员变量
      • 4.实例
      • 5.内存图
    • 七、静态内部类
      • 1.特点
      • 2.注意点
      • 3.使用格式
      • 4.静态内部类对象的创建格式
      • 5.调用方法的格式
    • 八、局部内部类
      • 1.定义
      • 2.格式
    • 九、结语

    一、前言

    本文将讲述有关内部类的知识点

    二、内部类定义

    内部类:在一个类的里面再定义一个类

    public class Outer{
    	public class Inner{
    	···
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三、内部类简单应用

    需求:写一个JavaBean类描述汽车
    属性:汽车品牌、颜色,发动机品牌、使用年限

    这时候我们定义成员属性的时候,除了carName、carColour,还有engineName、engineAge如果我们写一个Car类的话,后面两个属性就没办法定义在这个类中,只能重新写一个Engine类,但是由于发动机又是车的一部分,所以要把Engine类放到Car类中,这时候Engine类就是内部类了

    public class Car{
    
    	String carName;
    	String carColour;
    	
    	class Engine{
    		String engineName;
    		int engineAge;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    四、内部类特点

    • 外部类一部分
    • 单独出现没有意义
    • 可以直接访问外部类成员,私有化成员变量也可以访问
    • 外部类不能直接访问内部类对象,要先创建对象

    五、内部类分类

    • 成员内部类
    • 静态内部类
    • 局部内部类
    • 匿名内部类(重点使用)

    六、成员内部类

    1.书写

    • 写在成员位置,属于外部类的成员
    • 可以被修饰符修饰

    2.创建成员内部类对象

    • 当成员内部类被private修饰时,在外部类中编写方法,对外提供内部类对象
    • 直接创建
    外部类名.内部类名 对象名 = 外部类对象.内部类对象;
    
    • 1
    Outer.Inner oi = new Outer().new Inner();
    
    • 1

    3.获取外部类成员变量

    out.this.变量名
    
    • 1

    4.实例

    public class Outer{
    	private int a = 10;
    	
    	class Inner{
    		int a = 20;
    		System.out.println(Outer.this.a);
    		System.out.println(this.a);
    		System.out.println(a);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    输出的结果为:10、20、30

    5.内存图

    在这里插入图片描述

    七、静态内部类

    1.特点

    • 静态内部类是一种特殊的成员内部类
    • 有static修饰,属于外部类本身的
    • 总结:静态内部类与其他类的用法完全一样。只是访问的时候需要加上外部类.内部类

    2.注意点

    • 可以直接访问外部类的静态成员
    • 不可以直接访问外部类的非静态成员,如果要访问需要创建外部类的对象
    • 静态内部类中没有Outer.this

    3.使用格式

    外部类.内部类
    
    • 1

    4.静态内部类对象的创建格式

    外部类.内部类  变量 = new  外部类.内部类构造器;
    
    • 1

    5.调用方法的格式

    • 调用非静态方法的格式:先创建对象,用对象调用

    • 调用静态方法的格式:外部类名.内部类名.方法名()

    八、局部内部类

    1.定义

    • 定义在方法中的类

    2.格式

    class 外部类名 {
    	数据类型 变量名;
    	
    	修饰符 返回值类型 方法名(参数列表) {
    		// …
    		class 内部类 {
    			// 成员变量
    			// 成员方法
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    九、结语

    下一篇文章中我们将介绍匿名内部类相关知识点,也是在编写程序时非常重要的一个知识

  • 相关阅读:
    Java版本spring cloud + spring boot企业电子招投标系统源代码
    一文带你入门UML!
    业务可视化-让你的流程图"Run"起来(2.问题与改进)
    python切分字符串
    linux内核初始化成功后是如何过渡到android初始化的
    C++Qt开发——动画框架、状态机框架
    【三维重建】Ubuntu18.04安装COLMAP
    华为数通方向HCIP-DataCom H12-821题库(单选题:261-280)
    C++编程(五)单例模式 友元
    归并排序 和 逆序对 联动
  • 原文地址:https://blog.csdn.net/Alita233_/article/details/127564759
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号