Java外部类怎么访问内部类的方法和成员呢?可以在外部类创建内部类的实例化对象吗?
是可以的,付代码说明:
package com.demo;
public class Main {
public static void main(String[] args) {
// 非静态内部类实例对象无法独立存在, 必须依赖于一个外部类的实例对象
// 所以必须先实例化一个外部类对象
Demo demo = new Demo();
// 因为 非静态内部类 也是类的 非静态成员, 所以可以用 对象. 来访问
// 下面用 外部类对象.内部类构造器 来创建内部类对象
Demo.InnerDemo innerDemo = demo.new InnerDemo();
innerDemo.show();
}
}
/**
* 一个外部类
*/
class Demo {
/**
* 内部类, 这里的内部类是非静态的。
*
* 实例化静态内部类很简单, 直接 类名.内部类名, 这里不多说。
*/
public class InnerDemo {
/**
* 内部类的一个方法
*/
public void show() {
System.out.println("这是一个内部类的方法");
}
}
}
java中外部类可以访问内部类吗
一 对于外部类来说 内部类相当于它的一个属性 内部类中的private也相当于它本身的private属性 所以根据类内可见原则 内部类private是可以被外部类访问的
二 你在主方法中直接new一个自身类 相当于是在声明一个新的类 用这个新类去调用它的私有 你说是啥后果 对于jmv来说这就是典型的调用权限失败
JAVA 中外部类可以访问非静态内部类的私有属性???
1、创建一个Bean1类,并建好两个私有变量和构造方法。
2、创建一个Bean2类,引入对应包,创建好main 方法。
3、创建 Class? clazz = Class.forName("test.Bean1")。
4、创建Bean1 bean = (Bean1) clazz.newInstance();Field[] fs = clazz.getDeclaredFields()。
5、创建for (Field field : fs) // 要设置属性可达,不然会抛出IllegalAccessException异常 field.setAccessible(true);// 打印初始值 System.out.println(field.getName() + "===" + field.get(bean));}。
6、执行main方法查看结果。
Java在外界如何调用局部内部类
内部类和成员变量一样,通过外部类的实例调用内部类。
可以先创建外部类实例。
用外部类实例调用内部类构造方法创建内部类实例。
再用这个内部类实例调用内部类成员方法。
A a=new A();
A.B b=a.new B();
b.do1();//do是关键字,所以这里在do后面加了个1,否则无法编译。