Java 成员内部类
来源:互联网 发布:mysql 时间小于等于 编辑:程序博客网 时间:2024/04/30 13:04
成员内部类和静态内部类相比就是去掉了static,相当于类内的一个方法:
public class PublicInner{ public class Inner{ public void saySomething(){ System.out.println("this is publicInner class Inner "); } }}
客户端:
public class Client{ public static void main(String [] args){// StaticInner.Inner inner = new StaticInner.Inner();// inner.saySomething();// StaticInner innerObject = new StaticInner();// innerObject.saySomethingOutter(); PublicInner out = new PublicInner(); PublicInner.Inner inner = out.new Inner(); inner.saySomething(); }}在其他类中使用内部类的方式,也是进行实例化后进行相关的调用:
PublicInner out = new PublicInner();PublicInner.Inner inner = out.new Inner();还有另外的一种方式:
public class Client{ public static void main(String [] args){// StaticInner.Inner inner = new StaticInner.Inner();// inner.saySomething();// StaticInner innerObject = new StaticInner();// innerObject.saySomethingOutter();// PublicInner out = new PublicInner();// PublicInner.Inner inner = out.new Inner(); PublicInner.Inner inner = new PublicInner().new Inner(); inner.saySomething(); }}
执行结果:
本类使用内部类的方法和变量:
public class PublicInner{ public void saySomethingOutter(){ Inner inner = new Inner(); inner.saySomething(); } public class Inner{ public void saySomething(){ System.out.println("this is publicInner class Inner "); } }}
执行结果:
也就是说成员内部类,就相当于一个类内的一个普通的方法,但是这个方法是一个类,需要在外部类的保护下进行初始化和调用
public class PublicInner{ public String outter = "out "; public static final String outStr = "outStr"; public void saySomethingOutter(){ Inner inner = new Inner(); inner.saySomething(); System.out.println(inner.innerStr);//外部类获得内部类的成员变量 } public class Inner{ public String innerStr = "benben"; public void saySomething(){ System.out.println("this is outter static member :" + PublicInner.outStr);//内部类获取外部类的静态成员//变量 System.out.println("this is outter member : " + PublicInner.this.outStr);//内部类获取外部类的非静态成员//变量 System.out.println("this is publicInner class Inner "); } }}结果:
内部类能不能获得外部类的private方法和变量:
public class PublicInner{ private String outter = "out "; private static final String outStr = "outStr"; public void saySomethingOutter(){ Inner inner = new Inner(); inner.saySomething(); System.out.println(inner.innerStr); } public class Inner{ private String innerStr = "benben"; public void saySomething(){ System.out.println("this is outter static member :" + PublicInner.outStr); System.out.println("this is outter member : " + PublicInner.this.outStr); } }}
没有错,他打印出来了,并且内部类可以获得外部类的私有方法并且外部类也可以获得内部类的私有方法
总结,成员内部类就相当于类内部的一个普通方法,它可以使用类中的私有变量以及各种变量,也就是相当于在本类内部进行操作,而对于内部类,就相当于普通方法在本类中获取变量,肯定什么都能获取到,但是他们获取的时候有些不同
0 0
- Java 成员内部类
- Java成员内部类
- java成员内部类
- java-成员内部类
- java成员内部类
- JAVA中的内部类--成员内部类
- java 内部类(成员内部类)
- Java内部类之成员内部类
- java 内部类(成员内部类)
- java内部类之成员内部类、静态内部类
- java 成员内部类 局部内部类,匿名内部类
- Java 内部类(成员内部类、局部内部类、静态内部类和匿名内部类)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、局部内部类、静态内部类、匿名内部类)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Samba 的使用与访问
- 当freemarker中EL表达式的值为空时出现异常的解决方法
- 文本文件生成时的一项注意点(UTF-8)
- request.parameter是数组,不能直接==来用
- linux kernel中的一些utility API---(1)
- Java 成员内部类
- 影响网站seo排名的因素大全
- c#实现改变背景颜色、背景图片、插入背景音乐
- c#作业第二期第一弹(记事本程序)
- samurai-native 学习笔记--samurai的启动过程(待完善)
- java 正则校验
- 零基础入门学习C++ 001
- JDBC(CallableStatement)--In Parameter Insert Record
- 粒子群算法Python实现