内部类和外部类的访问细节

public class Outer{

private int outProp=5;

class Inner{

public void accessOuterProp(){

//非静态内部类可以直接访问外部类的成员

System.out.println("外部类的outProp值:"+outProp);

}

}

public void accessInnerProp(){

//外部类不嫩直接访问非静态内部类的实例Field

//下面代码出现编译错误

//System.out.println("内部类的inProp值"+inProp);

//如需访问内部类的实例Field,则必须显示创建内部类对象

System.out.println("内部类的inProp值:"+new Inner().inProp);

}

public static void main(String[] args){

//执行下面代码,只创建了外部类对象,还未创建内部类对象

Outer outer=new Outer();

out.accessInnerProp();

}

}

时间: 2024-11-02 04:00:33

内部类和外部类的访问细节的相关文章

内部类和 外部类相互访问

内部类: ①静态内部类中可以有非静态的方法 ②当内部类中有静态方法或者静态成员变量时,一定是静态内部类 1.外部类访问内部类: 内部类被static修饰:可以直接new Inner in = new Inner(); 内部类没有被static修饰:得先new出来外部类的实例,再new内部类的 Inner in = new Outer().new Inner(); 2.内部类访问外部类:(外部类.this.变量) 3.外部类和内部类中的方法相互访问: ①外部类的静态方法test和非静态内部类的非静

震惊!外部类可以访问内部类private变量

在讲Singleton时我举例时用过这样一段代码: public class SingletonDemo { private static class SingletonHolder{ private static SingletonDemo instance=new SingletonDemo(); } private SingletonDemo(){ System.out.println("Singleton has loaded"); } public static Single

Java内部类与外部类的那些事

昨天去笔试的时候遇到了Java的内部类的创建方式与访问权限的问题,我不懂,没写,故今天起来特意去试验一下,就有了这篇总结性的文章. Java中的内部类又分为非静态内部类(匿名内部类也是非静态的内部类)和静态内部类,两者与外部类的关系是不一样的,创建的方式也不一样. 1 非静态内部类 Java的非静态内部类在构造的时候,会将外部类的引用传递进来,并且作为内部类的一个属性,因此,内部类会隐式地持有其外部类的引用.也就是非静态内部类在构造的时候需要有一个外部类的实例传递进来进行构造,不能像普通的Jav

内部类修改外部类属性(转:http://demojava.iteye.com/blog/1075571)

public class Test {  public String demo="qw4rqwer";  public void changValue() {  this.demo=" hello word"; } class DemoOuterclass {   public  DemoOuterclass()   {    changValue();   } } public static void main(String[] args) {  Test t=n

java:内部类与外部类的区别和联系

注意事项一:在内部类中可以随意使用外部类的成员方法以及成员变量. 众所周知,在定义成员方法或者成员变量的时候,可以给其加上一些权限的修饰词,以防止其他类的访问.如在成员变量或者成员方法前面,加上Private 关键字,则其他类就无法调用这个类中的成员方法或则和成员变量.但是,如果这个类有成员内部类,则不受这方面的限制.也就是说,在成员内部类中可以随意引 用外部类的成员方法以及成员变量,即使这些类成员方法或者成员变量被修饰了private.如在成员外部类中定义了一个i变量,并且利用private关

c++内部类和外部类(java)

(1)简介: 内部类其实就是一种在类声明里面定义的一种局部数据类型.(非常类似于struct Node声明的),这和java的还有存在区别的. ---- 内部类的声明有public和private之分 如果声明为public,那么外面也可以用它来定义变量,比如Outer::Inner var 如果声明为private,那么外面不能用来定义变量,那么Outer::Inner var将会导致编译错误. (2)---- 内部类声明完之后就可以用来定义变量 这就和别的数据类型定义变量一样了,访问规则也一

java内部类和外部类

1.使用static可以声明一个内部类, 可以直接在外部调用 class Outer{ // 定义外部类 private static String info = "hello world" ; // 定义外部类的私有属性 static class Inner{ // 使用static定义内部类为外部类 public void print(){ // 定义内部类的方法 System.out.println(info) ; // 直接访问外部类的私有属性 } }; public void

内部类和外部类的实例变量可以共存

成员内部类:作为外部类的一个成员存在,与外部类的属性.方法并列. 内部类和外部类的实例变量可以共存. 在内部类中访问实例变量:this.属性 在内部类访问外部类的实例变量:外部类名.this.属性. 成员内部类的优点: ⑴内部类作为外部类的成员,可以访问外部类的私有成员或属性.(即使将外部类声明为PRIVATE,但是对于处于其内部的内部类还是可见的.) ⑵用内部类定义在外部类中不可访问的属性.这样就在外部类中实现了比外部类的private还要小的访问权限. 注意:内部类是一个编译时的概念,一旦编

“全栈2019”Java第七十五章:内部类持有外部类对象

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第七十五章:内部类持有外部类对象 下一章 "全栈2019"Java第七十六章:静态.非静态内部类访问权限 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习