当前位置:首页 » 编程语言 » java内部类调用外部类

java内部类调用外部类

发布时间: 2023-06-18 17:39:24

java 内部类如何被外部类调用

首先,你要搞清楚静态方法跟非静态方法的区别:

非静态方法是跟随着类的生命周期的,当类实例化时,非静态方法跟随着实例化对象产生,实例化对象可以调用类中的非静态方法,当实例化对象结束时,非静态方法也跟着结束。就是说,非静态方法是依附于实例化对象的,它的生命周期就是实例化对象的生命周期。

静态方法是不受制于类的实例化对象的,即静态方法从程序开始运行到最后释放内存结束是一直存在的,它的生命周期就是程序的生命周期。

从以上可知,静态方法调用非静态方法会造成一个问题,就是生命周期的不一致,比如说:程序刚刚开始运行时,类的实例化构造函数还没有执行,这时静态方法是调用不了非静态方法的;或者当实例化对象消亡之后,静态方法也是不能够去调用非静态方法的。

静态方法要想调用非静态方法,必须要通过实例化对象去调用;当然也可以把非静态方法变成静态方法,这样就不存在任何障碍了。

希望我的回答对你能够有所帮助。

Ⅱ JAVA匿名内部类怎么调用外部类的方法

并不清楚楼主代码需要如何实现。简短例子供参照,如有疑问可追问

publicclass${
空耐兆publicstaticvoidmain(String[]args){
finalAa1=new亩脊A();
Aa=newA(newB(){

@Override
publicvoidtoDo(){
a1.getB();//调用final对象
A.test();//或尝试调用静态方法
//a.getB();//错误,a未完成初始化,无法斗租被使用
}
});
}
}
classA{
Bb;
A(){}
A(Bb){
this.b=b;
}
staticvoidtest(){
}
publicBgetB(){
returnthis.b;
}
}
interfaceB{
publicvoidtoDo();
}

Ⅲ java 用内部类调用外部类的方法修改外部类的内容

将JLabel定义为外部类的成档坦卖员变量
内部类 只能访问外信亮部类成员变量或 局部final类变行逗量

Ⅳ 深入理解Java中为什么内部类可以访问外部类的成员

一般来说,外部类调用内部类的方法分为以下几种情况:
1.使用static可以声明一个内部类, 可以直接在外部调用

// 定义外部类
class Outer
{
// 定义外部类的私有属性
private static String info = "hello world";
// 使用static定义内部类
static class Inner
{
// 定义内部类的方法
public void print()
{
// 直接访问外部类的私有属性
System.out.println(info);
}
}
// 定义外部类的方法
public void fun()
{
// 通过内部类的实例化对象调用方法
new Inner().print();
}
}

public class InnerClassDemo03
{
public static void main(String args[])
{
// 通过Outer.Inner创建内部类的实例,并调用它的print方法
new Outer.Inner().print() ;
}
}
2.不使用statc声明一个内部类 ,使外部调用

//定义外部类
class Outer
{
//定义外部类的私有属性
private String info = "hello world";
//定义内部类
class Inner
{
//定义内部类的方法
public void print()
{
//直接访问外部类的私有属性
System.out.println(info);
}
};
//定义外部类的方法
public void fun()
{
//通过内部类的实例化对象调用方法
new Inner().print();
}
};
public class InnerClassDemo04
{
public static void main(String args[])
{
//外部类实例化对象
Outer out = new Outer();
//实例化内部类对象
Outer.Inner in = out.new Inner();
//调用内部类的方法
in.print();
}
}
3.在方法中定义内部类 ,使外部调用

//定义外部类
class Outer
{
//定义外部类的私有属性
private String info = "hello world";
//定义外部类的方法
public void fun(final int temp)
{
//在方法中定义的内部类
class Inner
{
//定义内部类的方法
public void print()
{
//直接访问外部类的私有属性
System.out.println("类中的属性:" + info);
System.out.println("方法中的参数:" + temp);
}
}
//通过内部类的实例化对象调用方法
new Inner().print();
}
}

public class InnerClassDemo05
{
public static void main(String args[]){
//调用外部类的方法
new Outer().fun(30);
}
}

Ⅳ Java:静态内部类调用外部类的方法

static 用在类前面只是表示这个内部类与外面的类之间没有实例之间的引用关系,是可以在内部类中直接创建外面的类的实例的。编译器不会为我们自动创建关联引用,但我们可以创建非关联的实例。

这个时候相当于只是给了特定的可见性控制。

你创建两个内部类,一个 static,一个非 static 然后在 eclipse 的 navigator 视图中打开你的类观察,那个非 static 类,编译器自动创建了一个成员变量用来在外部类和内部类之间建立关联。

Ⅵ java内部类调用外部类抽象方法为什么会调用外部类子类实现的方法

外部类有抽象方法,那外部类一定是抽象类。所以,与内部类对象关联的外部类对象一定是外部类的子类的实例,那调用的当然是外部类子类实现的方法。

Ⅶ java 内部类怎么调用外部类的函数

你好!
方法1:定义内部类的一个对象,用该对象调用外部类的成员函数
方法2:直接用语句:this.外部类的成员函数名。
仅代表个人观点,不喜勿喷,谢谢。

Ⅷ java内部类可以访问外部类的静态方法吗

内部类
就相当于一个外部类的
成员变量
,所以可以
直接访问
外部变量
,外部类不能直接访问内部类变量,必须通过创建内部类实例的方法访问,
new
InnerClass
(32).m就是创建内部类实例访问内部类成员变量。

想不通
的肯定是指内部类的私有变量
怎么可以
被外部类访问吧,按常规,私有变量m只能在InnerClass里被访问,
但你要注意,内部类就相当于一个外部类的成员变量,举个例子。
class
Outer{
private
int
m;
private
class
Inner{
private
int
n;
private
int
k;
}
}
m和类Inner都是成员变量,他们之间是平等的,唯一不同的就是Inner它是包装了几个成员变量比如n,k,也就是说m
n
k是平等的,区别在于访问n
k要通过Inner,就是要建立Inner实例访问nk,这样解释够
明白了吧

热点内容
python解压zip 发布:2025-02-12 09:08:46 浏览:921
如何加强人员配置 发布:2025-02-12 09:07:54 浏览:417
lol一区为什么服务器好卡 发布:2025-02-12 09:02:22 浏览:629
安卓运营商cm是哪个版本 发布:2025-02-12 09:00:00 浏览:515
pythonmd5校验 发布:2025-02-12 08:51:00 浏览:470
编程题解析 发布:2025-02-12 08:40:30 浏览:454
bilibi手机缓存目录在 发布:2025-02-12 08:33:11 浏览:458
听ti密码是多少 发布:2025-02-12 08:22:15 浏览:289
淘宝上传视频凭证 发布:2025-02-12 08:06:46 浏览:879
java画 发布:2025-02-12 08:01:00 浏览:550