第一百零四节 Java面向对象设计 - Java内部类成员

news2024/11/16 17:56:40

Java面向对象设计 - Java内部类成员

内部类可以访问其所有实例成员,实例字段和其封闭类的实例方法。

class Outer {
  private int value = 2014;
  public class Inner {
    public void printValue() {
      System.out.println("Inner: Value  = " + value);
    }
  } // Inner class ends here

  public void printValue() {
    System.out.println("Outer: Value  = " + value);
  }
  public void setValue(int newValue) {
    this.value = newValue;
  }
}

public class Main {
  public static void main(String[] args) {
    Outer out = new Outer();
    Outer.Inner in = out.new Inner();

    out.printValue();
    in.printValue();

    out.setValue(2015);

    out.printValue();
    in.printValue();
  }
}

上面的代码生成以下结果。

例子

以下代码显示如何访问内部类的内部变量。

public class Main {
  public static void main(String[] args) {
    Outer out = new Outer();
    Outer.Inner in = out.new Inner();

    out.printValue();
    in.printValue();

    out.setValue(3);

    out.printValue();
    in.printValue();
  }
}
class Outer {
  private int value = 1;
  public class Inner {
    private int value = 2;
    public void printValue() {
      System.out.println("Inner: Value  = " + value);
    }
  } // Inner class ends here
  public void printValue() {
    System.out.println("Outer: Value  = " + value);
  }
  public void setValue(int newValue) {
    this.value = newValue;
  }
}

上面的代码生成以下结果。

在内部类中使用关键字this

以下代码显示如何在内部类中使用关键字this。

class Outer {
  private int value = 1;
  class QualifiedThis {
    private int value = 2;

    public void printValue() {
      System.out.println("value=" + value);
      System.out.println("this.value=" + this.value);
      System.out.println("QualifiedThis.this.value=" + QualifiedThis.this.value);
    }

    public void printHiddenValue() {
      int value = 2;
      System.out.println("value=" + value);
      System.out.println("this.value=" + this.value);

      System.out.println("QualifiedThis.this.value=" + QualifiedThis.this.value);
    }
  }
  public void printValue() {
    System.out.println("value=" + value);
    System.out.println("this.value=" + this.value);
  }  
}

public class Main {
  public static void main(String[] args) {
    Outer outer = new Outer();
    Outer.QualifiedThis qt = outer.new QualifiedThis();
    System.out.println("printValue():");
    qt.printValue();

    System.out.println("printHiddenValue():");
    qt.printHiddenValue();
    outer.printValue();
  }
}

上面的代码生成以下结果。

隐藏变量

如果实例变量名称被隐藏,您必须使用关键字this或类名称以及关键字this限定其名称。

class TopLevelOuter {
  private int v1 = 100;

  // Here, only v1 is in scope
  public class InnerLevelOne {
    private int v2 = 200;

    // Here, only v1 and v2 are in scope
    public class InnerLevelTwo {
      private int v3 = 300;

      // Here, only v1, v2, and v3 are in scope
      public class InnerLevelThree {
        private int v4 = 400;

        // Here, all v1, v2, v3, and v4 are in scope

      }
    }
  }
}

从外部类引用变量

以下代码显示如何从外部类引用变量。

public class Test{
  private int value = 1;
  public class Inner {
    private int value = 2;

    public void printValue() {
      System.out.println("Inner: Value  = " + value);
      System.out.println("Outer: Value  = " + Test.this.value);
    }
  } // Inner class ends here

  public void printValue() {
    System.out.println("\nOuter - printValue()...");
    System.out.println("Outer: Value  = " + value);
  }

  public void setValue(int newValue) {
    System.out.println("\nSetting  Outer"s value to " + newValue);
    this.value = newValue;
  }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1812619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这三款思维导图工具,真的很好用

XMIND XMIND是优秀的国产思维导图和头脑风暴软件,非常符合国人的使用要求,旨在帮助用户理清思路、捕捉创意,并提高工作和生活效率。支持Linux、IOS、Android、MAC平台。 提供了非常多精美的结构图,例如鱼骨图、逻辑图、括号图、树…

Django DeleteView视图

Django 的 DeleteView 是一个基于类的视图,用于处理对象的删除操作。 1,添加视图函数 Test/app3/views.py from django.shortcuts import render# Create your views here. from .models import Bookfrom django.views.generic import ListView class B…

点云分割报告整理(未完成版-每天写一点)

体积占用网格表示对点进行体素化,然后使用3d卷积神经网络来学习体素级语义。由于点云的稀疏性,体素化效率低,为避免较高的计算成本而忽略了细节。此外,由于同一体素内的所有点都被赋予了相同的语义标签,因此精度受到限…

详解MySQL中的PERCENT_RANK函数

目录 1. 引入1. 基本使用2:分组使用3:处理重复值4. 使用优势4.1 手动计算百分等级4.2 使用 PERCENT_RANK 的优势4.3 使用 PERCENT_RANK 5. 总结 在 MySQL 中,PERCENT_RANK 函数用于计算一个值在其分组中的百分等级。 它的返回值范围是从 0 …

广州商学院数字经济产业学院领导莅临泰迪智能科技参观交流

6月6日,广州商学院数字经济产业学院主任潘鹏、专业负责人欧阳峰、专业老师刘宇宏莅临广东泰迪智能科技股份有限公司产教融合实训基地参观交流。泰迪智能科技董事长张良均、中职事业部总经理李振林、校企合作经理吴桂锋进行热情接待,双方就专业建设、人才…

超详解——深入详解Python基础语法——基础篇

目录 1 .语句和变量 变量赋值示例: 打印变量的值: 2. 语句折行 反斜杠折行示例: 使用括号自动折行: 3. 缩进规范 缩进示例: 4. 多重赋值(链式赋值) 多重赋值的应用: 5 .多…

20个国家科学数据中心(中)

7、国家极地科学数据中心平台 网址:http://www.chinare.org.cn 简介:国家极地科学数据中心(www.chinare.org.cn,以下称"本网站或NADC网站)的前身是中华人民共和国科技部1999年资助下建立的中国极地科学数据库系…

项目部署(前后端)

一:多环境概念: 借鉴来源:多环境设计_程序员鱼皮-多环境设计-CSDN博客 为什么需要多环境: 第一个例子:我们可以设想,我们肯定玩过王者荣耀,且王者荣耀也一直在不断更新,如果按我们…

STM32F103C8T6移植U8g2图形库及基于I2C协议的OLED显示(HAL库方式)【U8g2】【STM32开发板】【STM32CubeMX】

STM32F103C8T6移植U8g2图形库及基于I2C协议的OLED显示(HAL库方式)【U8g2】【STM32开发板】【STM32CubeMX】 实验说明 利用STM32F103的GPIO管脚、VCC和GND连接OLED屏的I2C接口,采用CubeMX设计一个HAL库程序框架,然后下载U8g2源码…

算法:94. 二叉树的中序遍历--扩展前中后层序遍历

中序遍历 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 中遍历结果为:H D I B E J A F K C G 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2]示例 2: 输入:root [] 输出&#x…

图片二维码在线制作的教程,轻松实现图片转二维码

现在很多的内容都会放入二维码中来提供展示,这种方法可以有效的将大量的内容通过扫码这种简单的方式来获取。比如将图片转二维码后,就可以用手机扫码查看图片,无需通过软件传输后下载才可以查看,并且这种方式还可以提升图片的安全…

后端开发面经系列 -- 华为OD -- C++面经(全)

华为OD – C面经(全) 公众号:阿Q技术站 文章目录 华为OD -- C面经(全)一面1、C结构体和类的区别,类默认的访问权限,结构体可以定义成员函数吗?2、多态的意义?多态的意义…

数据结构刷题-链表

数据结构刷题-链表 总结:1 链表的解法总结: 1 链表的知识点:1 LC链表合集:1.1 lc206反转链表: 双指针:lc25: K个一组翻转链表:栈1.2 lc203移除链表元素:1.3 设计链表:1.4…

基于C#开发web网页管理系统模板流程-总集篇

第一篇 基于C#开发web网页管理系统模板流程-登录界面和主界面_c#的网页编程-CSDN博客 第二篇 基于C#开发web网页管理系统模板流程-主界面管理员录入和编辑功能完善_c#网页设计-CSDN博客 第三篇 基于C#开发web网页管理系统模板流程-主界面管理员入库和出库功能完善_c#web程序设计…

【Vue】项目创建目录初始化

文章目录 vue-cli 建项目调整初始化目录结构 vue-cli 建项目 1.安装脚手架 (已安装) npm i vue/cli -g2.创建项目 vue create hm-shopping选项 Vue CLI v5.0.8 ? Please pick a preset:Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint) > Manually sel…

[CAN] DBC数据库编辑器的下载与安装

DBC数据库编辑器 1 概述2 下载与安装2.1 下载2.2 安装 1 概述 VectorCANdb是一款专为CAN(Controller Area Network)通信设计的数据管理工具。这款软件为工程师们提供了一个全面、高效的平台,用于定义、修改和管理与CAN网络相关的数据&#xf…

【CS.PL】Lua 编程之道: 简介与环境设置 - 进度8%

1 初级阶段 —— 简介与环境设置 文章目录 1 初级阶段 —— 简介与环境设置1.1 什么是 Lua?特点?1.2 Lua 的应用领域1.3 安装 Lua 解释器1.3.1 安装1.3.2 Lua解释器的结构 1.4 Lua执行方式1.4.0 程序段1.4.1 使用 Lua REPL(Read-Eval-Print Loop&#x…

卫星通讯传输电力运维巡检EasyCVR视频汇聚平台智能监控方案

随着科技的快速发展,视频监控技术已广泛应用于各个领域。而卫星通讯作为一种高效、稳定的通信方式,为视频监控系统的远程传输提供了有力支持。 一、方案背景 随着电力行业的快速发展,电力运维巡检工作变得愈发重要。传统的巡检方式往往受到…

二分查找算法:穿越算法迷宫的指南

✨✨✨学习的道路很枯燥,希望我们能并肩走下来! 目录 前言 一. 二分查找算法介绍 二 二分查找的题目解析 2.1 二分查找 2.2 在排序数组中查找元素的第一个位置和最后一个位置 2.3 搜索插入位置 2.4 x的平方根 2.5 山峰数组峰顶的索引 2.6 寻找峰值 2.7 寻找旋转数…

5.所有权

标题 一、概念二、规则三、示例3.1 变量作用域3.2 所有权的移交(深拷贝与浅拷贝)3.3 函数与所有权3.4 返回值与作用域3.5 引用的使用 四、切片(&str) 一、概念 所有权是Rust的核心特性。所有程序在运行时都必须管理它们使用计算机内存的方式。Rust的…