内部类与外部类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里面。
运行效果:


浙公网安备 33010602011771号