内部类与外部类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 }

运行效果如下:

 

posted @ 2021-01-29 12:37  EvanTheBoy  阅读(85)  评论(0)    收藏  举报