首页 > 编程语言 >Java面向对象:内部类(INNER CLASS)

Java面向对象:内部类(INNER CLASS)

时间:2024-10-25 16:19:44浏览次数:10  
标签:部类 Java 内部 静态 成员 public 实例 INNER CLASS

内部类(Inner Class)是Java中的一种特殊类,它定义在另一个类的内部。内部类可以访问其外部类的成员变量和方法,包括私有成员。这使得内部类非常适合用于封装与外部类紧密相关的逻辑。

下面是一个关于内部类的示例代码及其解释:

public class OuterClass {
    private String outerField = "Outer Field";

    // 内部类
    public class InnerClass {
        private String innerField = "Inner Field";

        public void display() {
            // 内部类可以访问外部类的成员变量
            System.out.println("Outer field: " + outerField);
            System.out.println("Inner field: " + innerField);
        }
    }

    public static void main(String[] args) {
        // 创建外部类的实例
        OuterClass outer = new OuterClass();
        
        // 创建内部类的实例
        InnerClass inner = outer.new InnerClass();
        
        // 调用内部类的方法
        inner.display();
    }
}

代码解释

  1. 外部类 OuterClass:

    • 包含一个私有成员变量 outerField
    • 包含一个内部类 InnerClass
  2. 内部类 InnerClass:

    • 包含一个私有成员变量 innerField
    • 包含一个方法 display(),该方法打印出外部类和内部类的成员变量。
  3. 主方法 main:

    • 首先创建了外部类 OuterClass 的实例 outer
    • 然后通过外部类的实例 outer 创建了内部类 InnerClass 的实例 inner。注意,创建内部类实例时需要使用外部类的实例。
    • 最后调用内部类实例 inner 的 display() 方法,输出外部类和内部类的成员变量值。

内部类的用途

  1. 封装性: 内部类可以将相关逻辑封装在外部类中,使代码更加模块化和清晰。
  2. 访问权限: 内部类可以直接访问外部类的所有成员,包括私有成员,这在某些情况下非常有用。
  3. 实现接口: 内部类可以实现外部类或接口,从而提供更灵活的设计。
  4. 回调机制: 内部类常用于实现回调机制,例如在GUI编程中处理事件监听器。

静态内部类

除了非静态内部类外,Java还支持静态内部类。静态内部类不依赖于外部类的实例,可以直接通过外部类来访问。

public class OuterClass {
    private static String staticOuterField = "Static Outer Field";

    // 静态内部类
    public static class StaticInnerClass {
        private String innerField = "Inner Field";

        public void display() {
            // 静态内部类只能访问外部类的静态成员变量
            System.out.println("Static outer field: " + staticOuterField);
            System.out.println("Inner field: " + innerField);
        }
    }

    public static void main(String[] args) {
        // 直接创建静态内部类的实例
        StaticInnerClass staticInner = new StaticInnerClass();
        
        // 调用静态内部类的方法
        staticInner.display();
    }
}

在这个例子中,静态内部类 StaticInnerClass 只能访问外部类的静态成员变量 staticOuterField,而不能访问非静态成员变量。

标签:部类,Java,内部,静态,成员,public,实例,INNER,CLASS
From: https://blog.csdn.net/Valentina614/article/details/143205115

相关文章

  • java计算机毕业设计毕业生能力调查评价系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着教育的普及和社会的发展,毕业生数量逐年增加,他们面临着日益激烈的就业竞争。企业在招聘过程中,需要更精准地了解毕业生的能力水平;教育机构也需......
  • java计算机毕业设计超市管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着经济的快速发展和人们生活水平的提高,超市作为一种重要的零售业态,在人们的日常生活中扮演着不可或缺的角色。然而,传统的超市管理方式往往依赖......
  • java计算机毕业设计Switch交流平台(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着游戏产业的蓬勃发展,Switch作为一款热门的游戏主机,在全球范围内拥有大量的用户。这些用户在游戏体验过程中,对于游戏攻略、用户交流等有着强烈......
  • java计算机毕业设计车源后台管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着汽车行业的蓬勃发展,车源相关信息的管理变得日益复杂和重要。汽车市场规模不断扩大,汽车经销商、租赁公司以及电商平台等涉及车源业务的主体数......
  • mysql之 关联表(left join | right join | inner join | union)
    一.首先给出两张表user表:用户基本信息表score表:分数表(学生在哪一天,哪一科目,所考分数)二.分别解释leftjoin,rightjoin,innerjoin,union1.leftjoin 原理userleftjoinscore=以user表为准,去查询所有user表成员的分数select*fromuserleftjoinscoreonuser.......
  • 2024最新互联网工程师 Java 面试八股文及答案整理
    2024金九银十即将结束,竟很多同学会问Java面试八股文有必要背吗?!!我的回答是:很有必要!!!!你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。国内的互联网面试,恐怕是现存的、最接近科举考试的制度。而且,我国的八股文确实是独树一帜。以美国为例,北美工程师面试比较重视算......
  • 3.Java 运算符(算术运算符、赋值运算符、逻辑运算符、关系运算符、三元运算符、标识符
    一、算术运算符1、基本介绍运算符说明+正号-负号运算符说明+加-减*乘/除%取模(取余)运算符说明示例结果++自增(前),先运算后取值a=2;b=++a;a=3;b=3;++自增(后),先取值后运算a=2;b=a++;a=3;b=2;–自减(前),先运算后取值a=2;b=--a;a=1;b=1;–自减(后),先......
  • java计算机毕业设计杂志销售系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着信息技术的飞速发展,传统的杂志销售模式面临着巨大的变革需求。当前,杂志行业虽然具有独特的内容优势,如专业性强、深度报道等,但在互联网的冲击......
  • java中变量的命名规范是?
    一、在Java中,变量的命名规范有助于提高代码的可读性和可维护性。以下是一些主要的命名规范:小驼峰命名法(camelCase)变量名的第一个单词首字母小写,后续单词的首字母大写。例如:firstName,totalAmount,isAvailable避免使用单字母命名除非在非常简单的情况下(如循环计数器),......
  • Java中循环结构中的for循环和练习案例
    文章目录前言循环结构for循环练习1(输出)练习2(求和)练习3(求偶数和)练习4(求水仙花数)练习5(求水仙花数且统计个数)练习6(求回文数)前言我是一名来自延边大学人工智能专业的热爱街舞的大四学生,目前在学习Java,我会根据我的学习路线给大家分享学习经验,这章我们学习Java中的控制结......