-
2021-03-06 18:13:39
后者更明确,如果内部类中存在相同的名称,则可以调用外部类方法。
class OuterClass {
void foo() { System.out.println("Outer foo"); }
View.OnClickListener mListener1 = new View.OnClickListener() {
void foo() { System.out.println("Inner foo"); }
@Override public void onClick(View view) {
foo(); //Calls inner foo
OuterClass.this.foo(); //Calls outer foo
}
}
View.OnClickListener mListener2 = new View.OnClickListener() {
@Override public void onClick(View view) {
foo(); //Calls outer foo
OuterClass.this.foo(); //Calls outer foo
}
}
}
更多相关内容 -
Java内部类调用外部类方法的问题?
2019-11-04 12:04:561.B是A的内部类 2.A有方法methodA(),B有方法methodB(); 3.现已获得B的实例b。 问:如何通过b调用A的methodA()方法? 具体类com.sun.media.sound.DirectAudioDevice和DirectSDL -
内部类如何调用外部类的方法
2019-09-28 17:18:45内部类如何调用外部类的方法 直接上代码 public class test{ public static void main(String[] args) { Outer.Inner p=new Outer().new Inner(); p.show(); } } class Outer{ int sum; class Inner{ ...内部类如何调用外部类的方法
直接上代码
public class test{ public static void main(String[] args) { Outer.Inner p=new Outer().new Inner(); p.show(); } } class Outer{ int sum; class Inner{ public void show(){ System.out.println("这是内部类的方法"); Outer.this.test(); //在内部类的方法中,直接外部类的名字+this+外部类方法名 } } public void test(){ System.out.println("这是一个外部类方法"); } }
新手,多多理解,多多交流。
-
内部类和外部类方法间的互相调用
2020-12-23 11:13:10内部类调用外部类的方法 public class test{ public static void main(String[] args) { Outer.Inner p=new Outer().new Inner(); p.show(); } } class Outer{ int sum; //在Outer类中声明一个内部类...内部类调用外部类的方法
public class test{ public static void main(String[] args) { Outer.Inner p=new Outer().new Inner(); p.show(); } } class Outer{ int sum; //在Outer类中声明一个内部类Inner class Inner{ public void show(){ System.out.println("这是内部类的方法"); //在内部类的方法中调用外部类的方法:直接外部类的名字+this+外部类方法名 Outer.this.test(); } } public void test(){ System.out.println("这是一个外部类方法"); } }
外部调用内部类的方法
1. 使用static可以声明一个内部类, 可以直接在外部调用
// 定义外部类 public class Outer{ // 定义外部类的私有属性 info private static String info = "hello world"; // 定义外部类的方法 public void fun(){ // 通过内部类的实例化对象调用内部类的方法 new Inner().print(); } // 使用static定义内部类 static class Inner{ // 定义内部类的方法 public void print(){ // 直接访问外部类的私有属性 System.out.println(info); } }; }; public class test{ public static void main(String args[]){ new Outer.Inner().print(); // 调用外部类的fun()方法 } };
2. 不使用statc声明一个内部类 ,使外部调用
//定义外部类 class Outer{ // 定义外部类的私有属性 private String info = "hello world"; // 定义外部类的方法 public void fun(){ // 通过内部类的实例化对象调用方法 new Inner().print(); } // 定义内部类 class Inner{ // 定义内部类的方法 public void print(){ // 直接访问外部类的私有属性 System.out.println(info); } }; }; public class test{ 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内部类基本介绍、如何实例化内部类和如何调用外部类属性和方法
2020-06-21 19:32:50内部类没有使用static关键字修饰,并且和外部类的成员变量和方法属于同一级别,这样的是非静态成员内部类(可以使用权限修饰符修饰,和final、abstract关键字修饰)。 public class Atest { private String name = ...一、 Java内部类分类:
1.非静态成员内部类:
内部类没有使用static关键字修饰,并且和外部类的成员变量和方法属于同一级别,这样的是非静态成员内部类(可以使用权限修饰符修饰,和final、abstract关键字修饰)。
public class Atest { private String name = "张三"; //类没有用static修饰 class Btest{ public void say(){ System.out.println("我是非静态成员内部类"); } } }
2.静态成员内部类:
内部类使用static关键字修饰,并且和外部类的成员变量和方法属于同一级别,这样的是静态成员内部类(可以使用权限修饰符修饰,和final、abstract关键字修饰)。
public class Atest { public static String name = "张三"; public String age = "23"; static class Btest{ public void say(){ System.out.println("外部成员变量,name = " + name); System.out.println("我是静态成员内部类"); // 不可以调用非静态 // System.out.println("外部成员变量,age = " + age); } } }
3.局部内部类:
定义在一个类的成员方法、代码块、构造器内部的类,这样的类成为局部内部类(不能使用权限修饰符修饰局部内部类)。
public class Atest { public void execute(){ class Dtest{ } } }
4.匿名内部类:
匿名内部类是没有类名的类,是特殊的局部内部类。
(匿名内部类需要实现接口或是继承一个抽象类,此外匿名内部类不能定义构造器,因为是匿名)
局部内部类实现接口:public class Atest { public static String name = "张三"; public String age = "23"; public void execute(){ class MyInterface implements TestInterface{ @Override public void play() { System.out.println(name + "在打篮球"); } } } } interface TestInterface{ void play(); }
可以简化成匿名内部类:
public class Atest { public static String name = "张三"; public String age = "23"; public void execute(){ TestInterface myInterface = new TestInterface(){ @Override public void play() { System.out.println("这是匿名内部类"); } }; myInterface.play(); } } interface TestInterface{ void play(); }
二、 内部类如何实例化:
1.实例化非静态成员内部类:
public class Atest { public static String name = "张三"; public String age = "23"; class Btest{ public void say(){ System.out.println("测试非静态成员内部类实例化"); } } }
public class MainTest { public static void main(String[] args) { //非静态成员内部类实例化 //1.实例化外部类 Atest atest = new Atest(); //2.实例化内部类 Atest.Btest btest = atest.new Btest(); btest.say(); } }
2.实例化静态成员内部类:
public class Atest { public static String name = "张三"; public String age = "23"; static class Ctest{ public void say(){ System.out.println("测试静态成员内部类实例化"); } } }
public class MainTest { public static void main(String[] args) { //静态成员内部类实例化 Atest.Ctest ctest = new Atest.Ctest(); ctest.say(); } }
三、 内部类如何调用外部类属性与方法:
public class Atest { public static String name = "张三"; public String age = "23"; class Btest{ public String age = "22"; public void say(String age){ System.out.println("我是输出的形参参数,age = " + age); System.out.println("我是输出的Btest类成员变量,age = " + this.age); System.out.println("我是输出的Atest类成员变量,age = " + Atest.this.age); } } }
执行主方法:
public class MainTest { public static void main(String[] args) { //静态成员内部类实例化 Atest atest = new Atest(); Atest.Btest btest = atest.new Btest(); btest.say("18"); } }
输出结果:
我是输出的形参参数,age = 18 我是输出的Btest类成员变量,age = 22 我是输出的Atest类成员变量,age = 23
-
内部类可以访问外部类的属性和方法吗?
2021-02-12 19:29:53当内部类调用外部类的私有属性时,其真正的执行是调用了编译器生成的属性的静态方法(即acess$0,access$1等)来获取这些属性值。这一切都是编译器的特殊处理。外部类可以通过内部类的实例获取私有属性x的操作.如何让... -
内部类和外部类之间的相互调用
2020-03-16 13:20:34②当内部类中有静态方法或者静态成员变量时,一定是静态内部类 一般内部类在外部类的成员变量位置,像这样: 1 public class Outer { 2 class Inner{ 3 4 } 5 } 1、外部类访问内部类: 内部类被static修饰... -
内部类调用外部类方法时传参的问题
2017-03-12 18:54:00内部类调用外部类方法时传参是可以传参的,不管外部类方法是private,还是public;而且内部类里可以修改外部类的成员变量。 如果外部类方法无法得到内部类局部变量的值,那应该是哪里写错了。 -
Python内部类,内部类调用外部类属性,方法
2018-12-17 10:07:04一 Python中内部类 class MyOuter: age=18 def __init__(self,name): self.name=name class MyInner: def __init__(self,inner_name): self.inner_name=inner_name out=MyOute... -
Java 内部类调用外部类方法的一个注意点
2016-01-14 11:07:06今天在写代码的时候,涉及到使用一个内部类去调用外部类方法的问题,总是得不到我想要的结果,后经过DEBUG,才发现哪里出现了问题。现写了一个简单的代码,来重现这个问题。 打印出来的结果为: a: 20 a: 0 ... -
外部类可以调用内部类方法吗?
2021-02-12 14:20:49外部类可以通过创建外部对象来创建内部对象再调用内部方法class Outer{ // 定义外部类private String info = "hello world" ; // 定义外部类的私有属性class Inner{ // 定义内部类public void print(){ // 定义内部... -
内部类和外部类的调用
2018-02-25 12:37:31//外部类 public class Out{ private int yes = 0; int data = 1 ; //内部类 public class In{ int yes = 2 ; public void print() { System.out.println("...//调用外部类和内部类同名变量或属... -
内部类的方法(外部调用内部类的方法)
2017-11-24 09:14:30外部调用内部类的方法 -
内部类调用外部类变量
2019-09-12 15:07:08要求:使用已知的变量,在控制台输出30,20,10。 class Outer { public int num = 10; class Inner { public int num = 20; public void show() { int num = 30; Sy... -
匿名内部类实现多线程,内部类调用外部方法中定义的变量
2017-09-13 09:50:08package Test;import java.util.Date;public class MyTread { /** * @author peter * @desc 启动多线程 推送消息到接口地址,匿名内部类调用外部方法属性 * @date 2017.09.13 */ public void test() { // -
Kotlin中内部类与嵌套类的使用
2021-04-28 13:05:12嵌套类 相当于java中的静态内部类(有static关键字修饰的内部类) //嵌套类 class OutClass1{ private var nameStr:String = " print nameStr" ... //外部想调用InnerClass的方法,可以直接调用 var inner1:String -
Swift内部类调用外部类方法、属性的变通
2017-05-25 17:13:31Swift的内部类比较鸡肋,在内部类里面不能调用外部类的属性或方法,那么如何解决这个问题,把内部类里面调用外部类的那部分代码方法移动到外部类里面,成为外部类的方法,是一种变通解决方式。 -
javaSE 内部类,内部类调用外部类同名变量。 外部类名.this表示外部类对象
2018-06-08 10:07:01Test.java(测试类):package cn.xxx.demo; public class Test { public static void main(String[] args) { Outer.Inner in = new Outer().new Inner();... // 调用内部类对象方法。 } } Outer.ja... -
Java如何调用内部类的方法
2021-02-12 13:58:42展开全部参阅下段: 《内部类》内部类是指32313133353236313431303231363533e4b893e5b19e31333262353462在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,... -
匿名内部类访问外部类方法中的局部变量
2019-09-04 16:13:16这里所说的“匿名内部类”主要是指在其外部类的成员方法内定义,同时完成实例化的类,若其访问该成员方法中的局部变量,局部变量必须要被final修饰。 原因是编译程序实现上的困难:内部类对象的生命周期会超过局部... -
java中的外部类和内部类 | 学步园
2021-02-12 14:20:491.概念外部类:这是一个相对内部类的概念,如果一个类中嵌套了另外一个类,我们就把这个类叫做外部类。内部类:顾名思义,就是定义在里边的那个类。 见以下代码:定义了一个类Outer,在Outer内中一定了私有成员变量x... -
内部类和静态内部类的调用
2021-02-28 13:05:49package day6$6;public class Inside {public static void main(String[] args) {//先创建一个外部类对象Outside in=new Outside();//在通过外部类对象创建一个内部...//调用内部类自己的属性和方法oi.Swim();System... -
python类中调用外部函数,python 函数中 定义类
2020-12-22 14:05:34Q1:python函数里的数组如何在函数外调用出来使用返回值的方法有两种:可以直接把调用的函数作为变量使用可以用调用函数给一个变量赋值第一种情况见如下例子:l = [1,2,3,4,5]def add_element(list, element):list.... -
java内部类 和外部类的区别
2021-03-07 00:47:13下面说一说内部类(Inner Class)和静态内部类(Static Nested Class)的区别:定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明 为abstract的... -
白话文:记一次spring使用内部类bean调用外部类bean造成空指针趟的坑
2019-05-07 15:41:41这一阶段大量使用内部类bean定义临时简单的策略接口,在外部类bean中决定使用哪个策略,然后直接调用相应的接口方法,此前使用若干次未见问题,直到这次出现空指针,使用debug,发现内部类调用外部类方法时,外部类中注入的... -
python中的嵌套类(内部类调用外部类中的方法函数)
2016-05-16 13:28:41所以,在PYTHON2.X中,要在内部类中调用外部类的方法,就必须得实例化外部类,然后,传入实例进行调用。 花了我两个小时啊,资料没找到,自己一个一个想法调试,真的失败了三四十次,PRINT了N多~~~:) ? 1 2 3 ... -
java外部类如何调用内部类的属性和方法
2019-05-31 15:27:47java外部类如何调用内部类的属性和方法 解决方法: 直接看代码 public static void main(String[] args) { //调用静态内部类的方式1 TestChild testChild = new TestChild(); testChild.test(); //... -
为什么内部类调用的外部变量必须是final修饰的?
2019-05-20 20:21:54因为生命周期的原因。...首先,内部类和外部类其实是处于同一个级别,内部类不会因为定义在方法中就会随着方法的执行完毕而跟随者被销毁。问题就来了,如果外部类的方法中的变量不定义final,那么当... -
java调用内部类的两种方法
2018-11-06 19:31:36//一、调用内部类的第一种方式,将内部类声明为static,直接通过总类调用 testList.add(new TestPrintList.User(3,"tom")); testList.add(new TestPrintList.User(4,"jack")); testList.add(new ...