大四实习准备4_java内部类
发布日期:2022-03-11 15:03:35 浏览次数:6 分类:技术文章

本文共 4371 字,大约阅读时间需要 14 分钟。

2015-4-30

[昨天又可耻地休息了一天,懒劲比较大啊。跟懒劲有直接关系,这几天对幸福的感知也黯淡了,对未来的幸福不是那么渴望了。表现在对亲情和爱情上。

我想生活的本意是积极进取、茁壮生长并时常感激啊。所以要热爱生活啊。心胸要宽阔。加油^O^

书:
1、周昌乐,《禅悟的实证:禅宗思想的科学发凡》,东方出版社,2006年
2、库比特,《生活 生活:一种正在来临的生活信仰》,宗教文化出版社,2004年
3、克里希那穆提,《爱的觉醒》,深圳报业集团出版社,2006年
]

Java 内部类(鸡蛋里又有小鸡蛋,这个小鸡蛋同样有蛋清、蛋黄)

(?java中,类可以用哪些修饰符-----public、abstract、final。类的成员变量、成员函数,接口等可以用哪些修饰符。默认情况下是哪种修饰符。为什么)

非静态内部类

创建非静态内部类;

在外部类中访问内部类(先创建一个内部类的对象,再访问其成员);

在外部类外访问内部类(先创建一个外部类的对象,再通过该对象创建一个内部类的对象,再访问其成员(注意是非private的));

在内部类中访问外部类(直接访问);

1 class wai{ 2     int x = 5; 3     class nei{
//创建非静态内部类 4 int xx = 6; 5 void visitX(){ 6 System.out.println(x);//在内部类中访问外部类 7 } 8 } 9 void visitXX(){
//在外部类中访问内部类10 nei n = new nei();11 System.out.println(n.xx);12 }13 }14 15 public class test{16 public static void main(String[] args){17 wai w = new wai();18 wai.nei wn = w.new nei();//在外部类外创建内部类的对象,法119 System.out.println(wn.xx);//在外部类外访问内部类20 21 wai.nei wn2 = new wai().new nei();//在外部类外创建内部类的对象,法222 System.out.println(wn2.xx);//在外部类外访问内部类23 24 w.visitXX();25 wn.visitX();26 }27 }
示例1

当在内部类中访问外部类的成员,而内部类的成员与外部类的该成员同名时,直接访问的话,还是访问内部类的成员。

重名时如何去访问外部类中的该成员呢?

1 class wai{ 2     int x = 5; 3     class nei{ 4         int x = 6; 5         void visitWaiX1(){
//法1 6 wai w1 = new wai(); 7 System.out.println(x); 8 System.out.println(w1.x); 9 }10 void visitWaiX2(){
//法211 System.out.println(this.x);12 System.out.println(wai.this.x);13 System.out.println("this="+this);14 System.out.println("wai.this="+wai.this);15 }16 }17 }18 19 public class test{20 public static void main(String[] args){21 wai w = new wai();22 wai.nei wn = w.new nei();23 wn.visitWaiX1();24 wn.visitWaiX2();25 System.out.println("wn="+wn);26 System.out.println("w="+w);27 }28 }
示例2

静态内部类

创建静态内部类(使用static修饰即可。另外,外部类是不能用static来修饰的);

在外部类中访问静态内部类(与 非静态内部类 的方法相同); 

在外部类外访问静态内部类(与非静态内部类 的方法不同了,静态的,是不依赖与对象的,所以不需要创建外部类对象,而可以直接创建这个静态内部类,当然需要指明是属于哪个外部类的静态内部类);

1 class wai{ 2     static class nei{
//创建静态内部类(使用static修饰即可。另外,外部类是不能用static来修饰的) 3 int xx = 6; 4 } 5 void visitXX(){ 6 nei n = new nei(); 7 System.out.println(n.xx);//在外部类中访问静态内部类(与 非静态内部类 的方法相同) 8 } 9 }10 11 public class test{12 public static void main(String[] args){13 wai.nei wn = new wai.nei();14 System.out.println(wn.xx);15 //在外部类外访问静态内部类(与非静态内部类 的方法不同了,16 //静态的,是不依赖与对象的,所以不需要创建外部类对象,而可以直接创建这个静态内部类,17 //当然需要指明是属于哪个外部类的静态内部类);18 wai w = new wai();19 w.visitXX();20 }21 }
示例1

局部内部类(在类的成员函数中定义一个内部类)

创建局部内部类(访问该类必须在该内部类所在的方法中通过创建内部类对象来访问);

在局部内部类中访问外部类的成员变量(直接访问);

在局部内部类中访问外部类的局部变量(需声明为final);

在静态方法中的局部内部类中访问外部类中的成员变量(该成员变量必须是静态成员);

1 class wai{ 2     int x = 5; 3     void visit1(){ 4         final int xx = 6; 5         class nei{
//创建局部内部类 6 void fun(){ 7 System.out.println(x);//在局部内部类中访问外部类的成员变量(直接访问x) 8 System.out.println(xx);//在局部内部类中访问外部类的局部变量(xx需声明为final) 9 }10 }11 nei n = new nei();12 n.fun();13 }14 static int y = 7;15 static void visit2(){16 class nei{17 void fun(){18 System.out.println(y);//在静态方法中的局部内部类中访问外部类中的成员变量(该成员变量必须是静态成员)19 }20 }21 nei n = new nei();22 n.fun();23 }24 }25 26 public class test{27 public static void main(String[] args){28 wai w = new wai();29 w.visit1();30 w.visit2();31 }32 }
实例1

匿名内部类(暂理解作,其实可以是继承自父类的一个类,但是整合到一起了,不显示出来了,于是“匿名”了。然后是在主函数中创建的类,所以叫”内部类“???

觉得有点不科学。。。。。但不重要吧。)

创建匿名内部类

(补充,匿名内部类所继承的父类不需要是抽象类或接口,正常的也行);

匿名内部类的初始化(利用非静态语句块)

1 class neiFather{ 2     int x; 3     void output(){ 4         System.out.println("in neiFather"); 5     } 6 } 7  8 public class test{ 9     public static void main(String[] args){10         neiFather nf = new neiFather()11         {12             {13                 x = 5;14             }15             void output(){16                 System.out.println("x="+x);17             }18         };19         nf.output();20     }21 }
示例1

转载于:https://www.cnblogs.com/kiwi-bird/p/4468550.html

转载地址:https://blog.csdn.net/weixin_30267785/article/details/99159952 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java IO包装流如何关闭?
下一篇:us/os iii信号量

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年03月30日 22时36分53秒