成员内部类 | 静态内部类 | 局部内部类 | 匿名内部类

网友投稿 583 2022-10-08

成员内部类 | 静态内部类 | 局部内部类 | 匿名内部类

成员内部类 | 静态内部类 | 局部内部类 | 匿名内部类

1、成员内部类

可以访问外部类的所有资源、本身内部不能有静态属性(本身就需要外部类的实例化)通过类.this.变量名。调用外部类相同的方法或者属性

ExternalClass.this.a

创建成员内部类实例时,外部类的实例必须已经存在。

ExternalClass externalClass = new ExternalClass(); InnerClass innerClass = externalClass.new InnerClass();//创建内部类对象

package com.zheng.demo10;public class ExternalClass { String name = "hello"; private int a = 666; public void displayExternal() { System.out.println("我是外部类"); } //内部类 class InnerClass { private int a= 888; public void didplayInner() { System.out.println("我是内部类"); } //调用外部类的私有属性 public void show() { System.out.println("我拿了内部类的私有属性:"+a); System.out.println("我拿了外部类的私有属性:" + ExternalClass.this.a); } //调用外部类的方法 public void show1() { displayExternal(); } } public static void main(String[] args) { ExternalClass externalClass = new ExternalClass(); InnerClass innerClass = externalClass.new InnerClass();//创建内部类对象 innerClass.didplayInner(); innerClass.show(); innerClass.show1(); }}

2、静态内部类

用static定义

只能访问外部类的静态资源不依赖外部类生成对象通过类.属性名调用外部属性

InnerClass innerClass = new InnerClass();//创建内部类对象

package com.zheng.demo10;public class ExternalClass { String name = "hello"; private static int a = 666; public static void displayExternal() { System.out.println("我是外部类"); } //内部类 public static class InnerClass { private static int a=9999; public void didplayInner() { System.out.println("我是静态内部类"); } //调用外部类的私有属性 public void show() { System.out.println("拿了静态内部类的私有熟属性:"+a); System.out.println("我拿了外部类的静态私有属性:" +ExternalClass.a); } //调用外部类的方法 public void show1() { displayExternal(); } } public static void main(String[] args) { InnerClass innerClass = new InnerClass();//创建内部类对象 innerClass.didplayInner(); innerClass.show(); innerClass.show1(); }}

3、局部内部类

定义在外部类的方法中的类,只在该方法内有用

不能使用访问控制符(publuc 、protected、default、private)不能用static修饰

package com.zheng.demo10;public class ExternalClass { String name = "hello"; private int a = 666; public void display() { class InnerClass {//局部内部类 double b = 520.1314; public void show() { System.out.println("访问外部属性:" + a); System.out.println("访问内部属性:" + b); } } //在方法体内使用 InnerClass innerClass = new InnerClass(); innerClass.show(); } public static void main(String[] args) { ExternalClass externalClass = new ExternalClass(); externalClass.display(); }}

4、匿名内部类

形式为:new <类或接口> <类的主体>

在匿名内部编写的方法对外不可见。没有自身的对象调用。通过继承一个接口实例化的对象不能调用子类独有的方法。没有构造器不能有访问修饰符合static修饰符

实现过程: 1、继承一个接口。2、重写接口方法

package com.zheng.demo10;public class ExternalClass { public static void main(String[] args) { A a = new A() { public void show() { System.out.println("我是匿名内部类"); } }; a.show(); }}interface A { public void show();}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序-7天写分答微信小程序
下一篇:微信小程序 todolist(微信小程序怎么开通)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~