内部类与外部类3
关于重名的小问题:
如果我们在外部类声明了一个age,在内部类也声明了一个age,那么系统会根据就近原则来确定到底是哪个age:
1 package com.hw.InnerClassDemo;
2 public class InnerDemo {
3 public static void main(String[] args){
4 Outer.Inner inn = new Outer(20).new Inner("瀚洋",69,18);
5 inn.show();
6 }
7 }
8
9 class Outer{
10 private int age;
11 public Outer(int age){
12 this.age = age;
13 }
14
15 public class Inner{
16 private String name;
17 private double weight;
18 private int age;
19
20 public Inner(String name,double weight,int age){
21 this.name = name;
22 this.weight = weight;
23 this.age = age;
24 }
25
26 public void show(){
27 System.out.println("姓名是:"+name+",体重是:"+weight+",年龄是:"+age);
28 }
29 }
30 }
以上代码中,离输出语句中的age近的是内部类的age,所以输出是18:

如果两个age都想访问,可以通过下面这种方式:
1 package com.hw.InnerClassDemo;
2 public class InnerDemo {
3 public static void main(String[] args){
4 Outer.Inner inn = new Outer(20).new Inner("瀚洋",69,18);
5 inn.show();
6 }
7 }
8
9 class Outer{
10 private int age;
11 public Outer(int age){
12 this.age = age;
13 }
14
15 public class Inner{
16 private String name;
17 private double weight;
18 private int age;
19
20 public Inner(String name,double weight,int age){
21 this.name = name;
22 this.weight = weight;
23 this.age = age;
24 }
25
26 public void show(){
27 System.out.println("姓名是:"+name+",体重是:"+weight+",年龄是:"+this.age+" "+Outer.this.age);
28 }
29 }
30 }
运行效果如下:


浙公网安备 33010602011771号