内部类与外部类1

说明:

在类里面还可以定义一个类,所以前者称之为外部类,后者称之为内部类。


 

代码:

 1 package com.hw.InnerClassDemo;
 2 public class InnerDemo {
 3     public static void main(String[] args){
 4         Outer out = new Outer(18);
 5         out.test();   
 6         //out.show(); 在外部不可调用Outer类的内部类方法
 7     }
 8 }
 9 
10 /**
11  * 注意,外部类只可用public和default修饰,而内部类比较特殊,可以用public,private,protected和default修饰
12  * 内部类甚至还可以用static来修饰,但一般不这样做。
13  * @author Administrator
14  *
15  */
16 class Outer{         //外部类
17     //外部类对象里面没有内部类对象也是没有关系的
18     //但是内部类对象想要存在,首先必须要有外部类对象
19     private int age;
20     public Outer(int age){
21         this.age = age;
22     }
23 
24     Inner inn = new Inner("弘毅",80);    //可把内部类对象理解为寄生虫,它们是寄生在外部类里面的
25     Inner in = new Inner("乐宇",75);   //因为外部类对内部类是一对多的关系
26     
27     private class Inner{   //非静态内部类    
28         private String name;
29         private double weight;
30         
31         public Inner(String name,double weight){
32             this.name = name;
33             this.weight = weight;
34         }
35         
36         public void show(){
37             System.out.println("姓名是:"+name+",体重是:"+weight+",年龄是:"+age);
38         }
39     }
40     
41     public void test(){
42         inn.show();
43         in.show();
44         //在内部类是可以访问到所有外部类成员的,包含公开的和私有的成员,以及方法。
45         //weight = 100; 外部类不可直接访问内部类的成员。
46         //因为比如说这里,就有两个内部类的对象,这个weight到底是哪个对象的?不知道。
47         //但是age就不同了,不管有多少个对象,我一定可以知道age这个变量一定就是外部类的。
48     }
49 }

运行效果:

 

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