【编程思想笔记】内部类的初始化

看编程思想有点时间了,看到了些在马士兵老师没有讲过的部分,所以打算记录一下

内部类的初始化:

.内部类的初始化和外部类的初始化略有不同,可以使用 外部类对象.new 内部类对象 创建内部类对象

 1 package com.github.hellxz.practice10_2_2;
 2 
 3 public class Outer {
 4     public String toString() {
 5         return "Outer class override toString() method";
 6     }
 7     class Inner{
 8         public String toString() {
 9             return "Inner class override toString() method";
10         }
11     }
12     public static void main(String args[]) {
13         //this is wrong way to create inner class instance
14         //! Inner inner = new Outer.Inner();
15         Outer outer = new Outer(); //create outer instance first ,cuz an inner instance must create on a outer instance
16         Inner inner = outer.new Inner(); //create inner instance. 
17         //the declare type also can be Outer.Inner
18         Outer.Inner inner2 = outer.new Inner();
19     }
20 }

内部类对象返回外部类对象的引用:

.使用 .this  在上边代码的基础上修改代码

 1 package com.github.hellxz.test;
 2 
 3 public class Outer {
 4     public String toString() {
 5         return "Outer class override toString() method";
 6     }
 7     class Inner{
 8         //a method to return outer class reference
 9         Outer outer() {
10             return Outer.this;
11         }
12         public String toString() {
13             return "Inner class override toString() method";
14         }
15     }
16     public static void main(String args[]) {
17         Outer outer = new Outer(); 
18         System.out.println(outer); //show which reference
19         Inner inner = outer.new Inner(); 
20         System.out.println(inner); 
21         // use inner class method to return outer class reference
22         //! Inner inner2 = inner.outer(); //it wrong
23         Outer outer2 = inner.outer();
24         System.out.println(outer2);
25     }
26 }
27 
28 //output:
29 //Outer class override toString() method
30 //Inner class override toString() method
31 //Outer class override toString() method

问我为啥注释都英文,因为我这linuxmint的root用户的fcitx好像没装好。在普通用户下正常,一使用root用户就不行,百度好久也没解决,有知道解决方法的老哥评论下告知呗,小弟感激不尽!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东北小狐狸-Hellxz

请作者喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值