内部类与外部类2

如果将内部类修饰符改为public,则在外部类外面也可以访问到它了。不过创建对象的时候方式就发生了改变。下面来看第一种:

第一种方式:

 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);
 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         
19         public Inner(String name,double weight){
20             this.name = name;
21             this.weight = weight;
22         }
23         
24         public void show(){
25             System.out.println("姓名是:"+name+",体重是:"+weight+",年龄是:"+age);
26         }
27     }
28 }

注意,即便修饰符改为了public,创建对象的时候也不能脱离外部类而存在。因为它们仍然是“寄生虫与宿主”的关系。

运行效果:


 

第二种方式:

 1 package com.hw.InnerClassDemo;
 2 public class InnerDemo {
 3     public static void main(String[] args){
 4         Outer out = new Outer(20);
 5         Outer otr = new Outer(19);
 6         Outer.Inner inn = out.new Inner("瀚洋",69);
 7         Outer.Inner in = otr.new Inner("御魔",65);
 8         inn.show();
 9         in.show();
10     }
11 }
12 
13 class Outer{         
14     private int age;
15     public Outer(int age){
16         this.age = age;
17     }
18     
19     public class Inner{       
20         private String name;
21         private double weight;
22         
23         public Inner(String name,double weight){
24             this.name = name;
25             this.weight = weight;
26         }
27         
28         public void show(){
29             System.out.println("姓名是:"+name+",体重是:"+weight+",年龄是:"+age);
30         }
31     }
32 }

 这样,先创建Outer的对象,再创建Inner的。这里,inn就是放在了out里面,而in则放在了otr里面。

运行效果:

 

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