问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java 主方法怎么调用内部类的方法

发布网友 发布时间:2022-04-25 19:43

我来回答

5个回答

热心网友 时间:2022-06-16 20:13

一般来说,外部类调用内部类的方法分为以下几种情况:
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[])
{
// 调用外部类的fun()方法
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);
}
};

热心网友 时间:2022-06-16 20:13

System.out.println(x);//这个是55

System.out.println(In.x);//这个是9

楼主这两行是对的,楼上是不用兄弟认为人家这儿错了?


      1,后面那个是无法做到的那个x是方法 的局部变量,在进入方法时被推到栈里,方法结束后就出栈了。除非有方式可以跑一个在主方法中的线程监控当前栈中变量,就像是Debug一样,我也研究好久这个,不过没发现有。

      2, 也像1一样没有侵入性,你可以用字节码框架去操作类,动态地改变方法的行为,也就是说你可以在main方法中用程序语言去改变doit(x)方法里所做的事情。

      3, 再侵入点儿,你可以传进那个doit(int)方法一个Callback, 你明白我意思?给你看个回调式:

public class HelloJava{
private interface Listener{
public void listenDoit(int x);
}
private static int x=55;
private class In{
private Listener listener;
private static final int x=9;
public In(Listener listener){this.listener=listener;}
public void doit(int x){
listener.listenDoit(x);
x=6;//这个X和上一行的应该是同一个吧?怎么在主方法里输出这个量?
listener.listenDoit(x);
HelloJava.this.x++;
}
}
public static void main(String[] args){
System.out.println(x);//这个是55
System.out.println(In.x);//这个是9
In in =new HelloJava().new In(new Listener(){
@Override
public void listenDoit(int x) {
System.out.println(x);
}});
in.doit(0);
System.out.println(x);//这个是55
System.out.println(In.x);//这个是10
}
}

       还有许多方式可以做到,比如代理模式等等,不过都大同小异。该方法好处是不改变方法的原定义模型。如返回值从void改成int,如果doit的返回值本身就是String,要返回个其他的东西,怎么去改变返回值完成?

       另外运行一下会发现最后两行输出不是55 10, 而是56, 9,你就知道HelloJava.this.x++;做的是什么了。

       4,然后就是楼上朋友们都说的方式,返回值。

热心网友 时间:2022-06-16 20:14

在Hellojava类中main方法外写
In in = new In();
因为你的内部类是私有的只针对Hellojava类私有,也就是说在Hellojava类可以实例化它。
这里弄清楚main方法虽然在Hellojava类中但是它并不属于该类。
然后在main方法中
new Hellojava().in.doit(x);
就OK了

热心网友 时间:2022-06-16 20:14

package hellojava;
public class Hellojava{
private static int x=55;
private class In{
private static final int x=9;
public void doit(int x){
x=6;
Hellojava.this.x++;
}
}
public static void main(String[] args){
System.out.println(Hellojava.x);//类的静态属性,直接用类调
In inTest=new In();
System.out.println(inTest.doit(9999));//类的普通方法,创建对象后调用,6
}
}

热心网友 时间:2022-06-16 20:15

x=6那个要在main方法里调用有两种方式,一种是把x定义在外面,但显然外面已经有一个x了,所以不可取。另一种方法是doit方法返回一个int型的数据,就是把这个x返回给调用者。main方法调用doit的时候就拿到这个6了
java 主方法怎么调用内部类的方法

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

Java如何调用内部类的方法

正确的方法是先创建一个类A的对象,比如A ma=new ma();然后再用这个对象来创建内部类的实例,比如A.B mab=ma.new B();这里要注意后面的语法ma.new B()。也可以把这两步合为一步,比如A.B mab=new A().new B();注意,这里使用了两个new运算符,如果只有一个将是错误的,比如A.B mab...

Java在外界如何调用局部内部类

内部类和成员变量一样,通过外部类的实例调用内部类。可以先创建外部类实例。用外部类实例调用内部类构造方法创建内部类实例。再用这个内部类实例调用内部类成员方法。A a=new A(); A.B b=a.new B(); b.do1();//do是关键字,所以这里在do后面加了个1,否则无法编译。

java怎么调用另一个类中的方法中的内部类中的方法?

class Hello { public static void pt(){ new A().ppt();class A { void ppt(){//ppt()方法不能在其他类中调用,只能在pt()方法中被调用 System.out.println("hello word");} } } } public class Test { public static void main(String[] args){ Hello.pt();} } ...

java内部调用内部方法的问题

Java内部调用内部方法主要是通过内部类实现。Java内部类分两种,成员内部类和方法内部类。代码如下:1.成员内部类/** * 成员内部类 */public class Outer { private int outer = 1; class Inner { public void show() { System.out.println("outer =" + outer); } } pu...

Java如何在一个类中引用另一个类的成员变量和方法

public Student(){} public Student(String id,String name){ this.id = id;this.name = name;} } === public class Test(){ String ids;String names;public static void main(String[] args){ Test test = new Test();Student stu = new Student("001","jack");test.ids = stu.id...

java外部类怎么调用内部类的方法

首先,你要搞清楚静态方法跟非静态方法的区别:非静态方法是跟随着类的生命周期的,当类实例化时,非静态方法跟随着实例化对象产生,实例化对象可以调用类中的非静态方法,当实例化对象结束时,非静态方法也跟着结束。就是说,非静态方法是依附于实例化对象的,它的生命周期就是实例化对象的生命周期。静...

java 中 方法之间可以嵌套么 ?

在JAVA语言中,在同一个类里面,方法是不能嵌套使用的,但是可以相互调用使用。

在java中有一个方法调用了很多个方法怎么用参数控制调用其中的任何一个...

import java.util.concurrent.Callable; public class CallableUse { public static void main(String... args) { // final int num = 100770; or int num = 100770; // 使用匿名的内部类, 如果需要传递参数可能需要将变量转换成final: try { callMethod(100, new Callabl...

java内部类与匿名内部类作用分别是什么?

Java 内部类 \x0d\x0a分四种:成员内部类、局部内部类、静态内部类和匿名内部类。 \x0d\x0a1、成员内部类: 即作为外部类的一个成员存在,与外部类的属性、方法并列。\x0d\x0a注意:成员内部类中不能定义静态变量,但可以访问外部类的所有成员。\x0d\x0apublic class Outer{\x0d\x0aprivate static in...

Java调用匿名内部类的方法 java中的内部类和匿名内部类 java调用类的方法 java调用其他类的方法 java内部类和外部类 java通过反射调用内部类 java内部类引用外部变量 java内部类是什么 java调用方法
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
一共有14朵花.①左边有6朵,右边有几朵?②有5朵,有几朵 骑电动车要戴头盔吗:不仅要戴头盔,还要有三证一牌?一次说清,不再被... 一般情况下婚内出轨犯法吗 中外食物差异手抄报英语版 求问我总是不敢上台演讲怎么办? 河南省招生办电话多少? 河南省招生办官网电话是多少? 大货车水箱的气压阀在运行中是否是关闲的 难道两千多年前已经有火炮了吗? ...不小心伤了人 支付全部医疗费用后 写个协议 怎么写 意思就是 以后... Java在外界如何调用局部内部类 Java 语言中使用内部类有什么好处? java中的内部类在什么场合下使用呢? 什么是内部类?内部类有什么作用?(java) Java提供了一种称为“内部类”的机制,使类可以在其他类中定义? Java匿名内部类怎样创建,有何作用和优点,创建线程怎样使用匿名内部类 java内部类有哪些? java 内部类和外部类的区别? java内部类使用场景? Java 静态内部类作用? 高热导率纳米银胶的可靠性研究 在那买室温固化导电胶? 固晶锡膏与银胶的区别之处在哪里? 背银、导电银浆、触摸屏导电银胶的区别? 摩托车电瓶铝耳接头断掉怎样修复? 小米手机的成功是什么基于什么模式 平时手通过社会公共空间间接接触无数细菌只通过水香皂能把细菌病毒洗掉吗会感染或被传染上疾病会致死吗? 接触到公共厕所扶手会感染病毒吗 公共场合怎样让孩子远离细菌病毒? 接触了共同交通的扶手和公共设备后,没洗手就拿纸巾擦汗,结果擦破痘痘出血了,请问会感染HIV吗? 17股本结构什么意思 java内部类怎么使用 股票问题股本结构 中国股市的股票股本结构一般是如何构成的? 股东股本结构是什么意思??? 资本结构是什么意思? Java如何调用内部类的方法 在java中如何正确使用内部类? JAVA内部类使用,什么时候该使用内部类及使 我以前的手机里面的照片怎么找到? 我手机照片丢失了怎么找回来 手机丢了,我想看丢失手机的照片短信怎样看? 手机丢了,登录了我的华为帐号,上面的照片还能找回吗? 什么是航空运输,航空运输按照不同的分类方法,可以分为几类? 航空运输管理 包机运输的方式分为几种? 航空运输的组织形式有哪些?并论述每种组织形式的优缺点。 航空快递业务有哪些内容? 航空运输货物主要有哪些? 航空货运代理公司的主要业务是什么?