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


浙公网安备 33010602011771号