当一个对象中的属性是引用类型(案例) 及内存分析图

来源:www.cnblogs.com 更新时间:2023-05-25 21:55

编程完成如下要求:
班级Grade类:

属性:编号,名称,地址
定义:无参构造方法、有参构造方法
定义方法:显示班级的信息。
学生类:
属性:学号,姓名,年龄,所在班级
定义方法:显示学生的信息(学号,姓名,性别,年龄,班级编号,班级名称)  //红色注释就是用 grade类创建的引用类型 g(代码28行)

注意:所在班级应为班级类的类型
测试类:
通过有参构造方法,创建班级对象
通过无参构造方法,创建学生类对象
调用显示信息的方法显示学生的信息

 
 1 class Grade{
 2         //属性:编号,名称,地址
 3         int num;
 4         String name;
 5         String address;
 6 
 7         //构造方法  无参:
 8         public Grade(){
 9         
10         }
11         //有参构造方法
12         public Grade(int num,String name,String address){
13             this.num = num;
14             this.name = name;
15             this.address = address;
16         }
17         //方法:显示学生的信息
18         public void show(){
19             System.out.println("班级编号: " + num + "\n班级名称: " + name + "\n班级地址" + address );
20         }
21 }
22 class Student{
23     //属性:学号,姓名,性别,年龄,所在班级
24     int id;
25     String name;
26     char sex;
27     int age;
28     Grade g = new Grade();    //注意:g没有赋值时,则默认值为null
29     //方法:显示学生的信息(学号,姓名,性别,年龄,班级编号,班级名称)
30     public void showInfo(){
31         System.out.println("学生信息如下:");
32         System.out.println("学号:"+ id + "\n姓名:" + name + "\n性别:" + sex + "\n年龄:" + age + "\n班级编号:" + g.num + "\n班级名称:" + g.name);
33     }
34 }
35 class Test{
36     public static void main(String[ ] args){
37         //通过有参构造方法,创建班级对象
38         Grade grade = new Grade(123,"教室一","一零一");
39         //通过无参构造方法,创建学生类对象
40         Student s = new Student();
41         //调用显示信息的方法显示学生的信息
42         s.showInfo();
43     }
44 }