当前位置: 首页 > news >正文

【Java】内部类【主线学习笔记】

文章目录

  • 前言
  • 内部类
    • 内部类的使用举例
    • 内部类的分类
    • 对于成员内部类的理解


前言

Java是一门功能强大且广泛应用的编程语言,具有跨平台性和高效的执行速度,广受开发者喜爱。在接下来的学习过程中,我将记录学习过程中的基础语法、框架和实践技巧等,分享学习心得,对自己学习过程进行整理和总结,也希望能为其他学习Java的朋友提供一些帮助和参考。


内部类

在Java中,将一个类A定义在另一个类B的里面,里面那个类A就称为内部类,类B则称为外部类。
当一类事务A的内部,还有一个部分需要一个完整的结构B进行描述,而这个内部的完整的结构B又只为外部事物A提供服务,不在其他地方单独使用,那么这个内部的完整结构B最好使用内部类。遵循高内聚,低耦合的面向对象开发原则。

内部类的使用举例

Thread类内部声明了state类,表示线程的生命周期。
HashMap类中声明了Node类,表示封装的key和value.

内部类的分类

  • 成员内部类:直接声明在外部类的里面。其中有可以根据是否被static修饰而分为静态的成员内部类和非静态的成员内部类。

  • 局部内部类:声明在方法内、构造器内、代码块内。其中又可以分为匿名的局部内部类和非匿名的局部内部类。

成员内部类:

class OuterClass {private String outerField = "Outer field";// 非静态成员内部类class InnerClass {void display() {System.out.println("Accessing from InnerClass: " + outerField);}}
}public class Main {public static void main(String[] args) {// 创建外部类对象OuterClass outer = new OuterClass();// 通过外部类对象创建内部类对象OuterClass.InnerClass inner = outer.new InnerClass();inner.display();  // 输出: Accessing from InnerClass: Outer field}
}

静态成员内部类:

class OuterClass {private static String staticOuterField = "Static Outer field";// 静态成员内部类static class StaticInnerClass {void display() {System.out.println("Accessing from StaticInnerClass: " + staticOuterField);}}
}public class Main {public static void main(String[] args) {// 创建静态内部类对象,不需要外部类实例OuterClass.StaticInnerClass staticInner = new OuterClass.StaticInnerClass();//直接声明内部静态 类staticInner.display();  // 输出: Accessing from StaticInnerClass: Static Outer field}
}

局部内部类:

class OuterClass {void outerMethod() {// 定义局部内部类class LocalInnerClass {void display() {System.out.println("This is a local inner class.");}}// 使用局部内部类LocalInnerClass localInner = new LocalInnerClass();localInner.display();}
}public class Main {public static void main(String[] args) {OuterClass outer = new OuterClass();outer.outerMethod();  // 输出: This is a local inner class.}
}

匿名局部内部类:

public class OuterClassTest {//开发中常见情况//Comparable是一个接口//方式1:提供了接口的实现类的对象public Comparable getInstance1(){//提供了实现了comparable接口的类class myCompare implements Comparable{@Overridepublic int compareTo(Object o) {return 0;}}myCompare c = new myCompare();return c;}//方式2:提供了接口的实现类的匿名对象public Comparable getInstance2(){//提供了实现了comparable接口的类class myCompare implements Comparable{@Overridepublic int compareTo(Object o) {return 0;}}return new myCompare();}//方式3:提供了接口的匿名实现类的对象public Comparable getInstance3(){Comparable c = new Comparable() {@Overridepublic int compareTo(Object o) {return 0;}};return c;}//方式4:提供了接口的匿名实现类的匿名对象public Comparable getInstance4(){return new Comparable() {@Overridepublic int compareTo(Object o) {return 0;}};}}

对于成员内部类的理解

从类的角度:可以声明属性、方法、构造器、内部类、代码块等结构;可以声明父类,可以实现接口;可以使用final修饰;可以使用abstract修饰;
从外部类的角度看:在内部可以调用外部类的结构,如属性、方法等;除了使用public、缺省外,还可以用private、protected修饰



http://www.mrgr.cn/news/35433.html

相关文章:

  • 【微服务即时通讯系统】——etcd一致性键值存储系统,etcd的介绍,etcd的安装,etcd使用和功能测试
  • 【爬虫】PlayWright使用说明
  • 38.重复的子字符串
  • AI大模型行业应用:企业如何走出一条智能化蜕变之路?
  • 【字符串】介绍
  • 关于YOLOX的一些优势
  • java是干什么的
  • keepalived+lvs集群
  • 屏幕演示工具 | 水豚鼠标助手 v1.0.7
  • 828华为云征文|华为云Flexus X实例:极速搭建个人代码仓库GitLab平台
  • 6种常见位运算符+异或运算符的使用(加密、解密)
  • Liblib:简化开发的强大工具
  • LED驱动电路
  • 编译和链接
  • linux网络编程7
  • 进度条QProgressBar
  • 数电学习基础(逻辑门电路+)
  • 失踪人口回归(明天开始继续更新学习内容)
  • 【Linux实践】实验三:LINUX系统的文件操作命令
  • 经典sql题(十一)查找共同好友或相互关注 二