JAVA-初步认识-第十章-内部类-局部内部类

一.

继续将之前的例子深化一下。现在要讲述的是内部类除了放置在成员上,还能放置在局部上。换句话说,就是哪都能放。

这里局部位置是指哪儿?

继续将程序补全,截图如下:

上面的截图其实交代了内部类在局部位置上的知识点,这里面有一定的规则。

截图中有两个位置创建内部类的对象,有一个没写完,只写了In,但是也交代了创建对象的位置。没写完的那个位置,书写内部类对象是没有问题的,访问内部类是没有问题的,因为它们处在同一层次上,可以"看到"内部类。但是func()和method()处在同一层次上,func()无法看到method()方法里的内部类。→这是我自己的理解。

程序越来越复杂,在Outer类的成员方法中定义了内部类(局部位置,我想起来局部位置是什么?是指位于函数的方法体内),而且在局部位置定义完内部类之后,立即就在相同层次的位置定义了内部类的对象。

接着编译运行该程序。

(我先说明一下我的理解,程序就是外部类调用自己的method()方法,而这个方法中有两次输出。错误,我一开始以为是有两次输出,一个是内部类中的输出,一个是in.show()的输出。但是内部类里的输出应该是不存在的,没有创建对象,怎么可能对类中的成员进行运算。因此,只有一个输出,结果无法输出,因为in对象里面没有num属性。)

编译的结果存在,且输出的是外部类的num,说明什么?系统自动的省略了外部类的调用,输出语句中是Outer.this.num而不仅仅是num。这种表述情况不多(这之前是不是讲解过,内部类可以直接访问外部类中的成员?),另外一种比较多。

接着对程序进行修改,访问的是局部位置中的局部变量。

最终类型就是final修饰的,

这里又开始对不同位置间的调用产生了疑惑,为什么这里可以对x进行访问。

不都是在局部位置中么,为什么它还要加上final呢?不加final还完成不了。

举个例子来说明一下,

返回完object后,可以用一个方法接收(?),举个例子来说明,

这个方法一调用,就返回一个object,要用变量来接收。

如果改成y,也不行,因为y是变化的,加上final就没事了。

这里讲解的知识点就是内部类定义在局部方法中,这种情况不多,另一种情况较多。

对局部的访问不是特别多,只要一加fianl就可以了。

时间: 2024-11-07 19:16:02

JAVA-初步认识-第十章-内部类-局部内部类的相关文章

Java学习笔记23---内部类之局部内部类只能访问final的局部变量

局部内部类是定义在方法体或代码块中的类,在笔记19中已有过简单介绍. 今天要讨论的是局部内部类为什么只能访问为常量的局部变量. 作者: 博客园--蝉蝉 请尊重作者劳动成果,转载请在标题注明"转载"字样,并标明原文链接: http://www.cnblogs.com/chanchan/p/8402411.html 参考资料: http://www.cnblogs.com/dolphin0520/p/3811445.html 1.首先来了解一下局部内部类是如何访问局部变量的 Person类

“全栈2019”Java第九十九章:局部内部类与继承详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第九十九章:局部内部类与继承详解 下一章 "全栈2019"Java第一百章:局部内部类可以实现接口吗? 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小

Java内部类——局部内部类

局部内部类,即放在“{块中}”,局部内部类,不能被成员修饰符static修饰,且内部类的成员也不能是static. 内部类中访问局部变量“{块中}”,需要将局部变量声明为final. 可以直接访问外部类的成员,因为还持有外部类中的引用. 但是不可以访问它所在的块中的变量,只能访问final修饰的局部变量(包括形参). 匿名内部类 前提:内部类必须是继承一个或者实现接口.但是所有的类都有一个共同的基类 Object,所以在用匿名类的时候,也可以不显示的生命一个基类(其实这个基类本身就存在了) 内部

“全栈2019”Java第九十八章:局部内部类访问作用域成员详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第九十八章:局部内部类访问作用域成员详解 下一章 "全栈2019"Java第九十九章:局部内部类与继承详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学

Java学习(十六)、成员内部类,静态内部类,匿名内部类,局部内部类

定义:将一个类定义在另一个类的内部.内部的类称为内部类; public class Outer{ class inner{ //省略 } } 特点: ①   内部类可以很好的实现隐藏,可以使用protected,private修饰符; ②   内部类可以直接访问外部类的所有成员,包括私有成员; ③   外部类不能直接访问内部类的成员,必须首先要建立内部类的对象才能访问; ④   内部类可以解决一些问题,比如间接的去实现多继承.可以避免修改接口而实现同一个类中两种同名方法的调用; 成员内部类及应用

Java中成员变量、局部变量、局部内部类、局部内部类方法作用域问题。

public class A { String s = "outer class member variable"; //成员变量 public void Method() { //成员方法 final String s1 = "inner class variable"; //局部变量 class InnerClass { //局部内部类 public void innerMethod() { //局部内部类方法 int test = 20; System.out

Java学习笔记(七):内部类、静态类和泛型

内部类 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类.下面就先来了解一下这四种内部类的用法. 成员内部类 成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员). 1 class Circle { 2 private double radius = 0; 3 public static int count =1; 4 public Circ

[Java开发之路](24)内部类

在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类.下面就先来了解一下这四种内部类的用法. 1. 成员内部类 成员内部类是定义在另一个类内部的类. package com.qunar.fresh; /** * Created by xiaosi on 16-3-29. */ public class Circle {    private double radius;    pub

Java编程思想---第十章 内部类(下)

第十章 内部类(下) 10.9 内部类的继承 因为内部类的构造器必须连接到指向其外围类对象的引用,所以在继承内部类的时候事情会变得有些复杂,问题在于那个指向外围类对象的引用必须被初始化,而在导出类中不再存在可连接的默认对象,要解决这个问题,必须使用特殊的语法来明确说清他们之间的关联: class WithInner { class Inner {} } public class InheritInner extends WithInner.Inner { InheritInner(WithInn