请教关于封装类的小白问题

#学生类

 package cn.itcast.callName;

public class Students {
    private String name;
    private int age;

    public void setName(String name){
        this.name = name;
    }
    public void setAge(int age){
        this.age = age;
    }

    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }

}

点名器

 package cn.itcast.callName;

import java.util.ArrayList;
import java.util.Random;

public class CallName {
    public static void main(String[] args) {
        ArrayList<Students> arr = new ArrayList<Students>();
        addStudent(arr);
        printStudentname(arr);
        randomStudents(arr);
    } 
    public static void addStudent(ArrayList<Students> arr){
        Students s1 = new Students();
        Students s2 = new Students();
        Students s3 = new Students();
        Students s4 = new Students();
        Students s5 = new Students();
        Students s6 = new Students();
        s1.setName("张三");
        s1.setAge(18);
        s2.setName("李四");
        s2.setAge(19);
        s3.setName("王五");
        s3.setAge(20);
        s4.setName("王八蛋");
        s4.setAge(22);
        s5.setName("舒淇");
        s5.setAge(23);
        s6.setName("哈韩狗");
        s6.setAge(19);
        arr.add(s1);
        arr.add(s2);
        arr.add(s3);
        arr.add(s4);
        arr.add(s5);
        arr.add(s6);
    }
    public static void randomStudents(ArrayList<Students> arr){
        Random r = new Random();
        int index = r.nextInt(arr.size());
        Students s = arr.get(index);
        System.out.println(s.getName());
    }
    public static void printStudentname(ArrayList<Students> arr){
        for(int i = 0;i <arr.size(); i++){
            Students s = arr.get(i);
            System.out.println(s.getName()+"..."+s.getAge());
        }
    }
}

System.out.println(s.getName()+"..."+s.getAge());这一行代码中,s.getName()的原理是啥?我愣是搞不懂,该不会是固定格式吧..
s是否地址,地址调用getName方法吗?那为啥getName后不需要传参?不传参怎么返回值?

6个回答

兄弟?你这个只有题,没有问,怎么破!

imkevin2011
imkevin2011 回复legendCoder: 谢谢!!!
2 年多之前 回复
chenbaige
legendCoder 回复imkevin2011: Students s = arr.get(i);这句代码就已经把那个地址上的数据读取到student对象上了,s.getName()就是获取对象中保存的属性值。 for(int i = 0;i <arr.size(); i++)就是循环从那个地址上取值!
2 年多之前 回复
imkevin2011
imkevin2011 问题我在最下面补充了不好意思
2 年多之前 回复
imkevin2011
imkevin2011 我曹,我注释了没读出来哈哈哈,笑死我自己了
2 年多之前 回复

Student s = arr.get(i)创建了一个Student对象的引用s指向arr.get(i)这个实例,通过引用s调用getName,getAge方法返回name,age的值,
这个实例你已经在addStudent方法里面通过setName,setAge方法赋值了。getName方法不需要传参是因为name,age两个属性都是全局变量。return就是返回值。

imkevin2011
imkevin2011 恍然大悟,靠谱
2 年多之前 回复

问题尼??貌似木有看见

java程序只要没报错,,它就算是封装了(java具有封装性)、

不过题主程序是自己写的话,你水平还不错,,都可以使用集合类了,

Small_Mouse0
小鼠标丶 回复imkevin2011: s是对象,,java中没有指针,,,不用传参数,是因为,上面Studeng类中对应的方法不需要传递参数,,,,看你说到地址是不是有C语言基础,,get..(),,,set..(..),,这是java类中对属性的访问方式(习惯,但据说安全。)
2 年多之前 回复
imkevin2011
imkevin2011 是看了老师敲的代码后,自己敲一遍的,知其然不知其所以然...问题我在楼下给不好意思注释了没读出来
2 年多之前 回复

封装类 jdk1.5 以后有的自动拆装箱

封装类? 代码是用了封装类。。。然后呢?没了?

imkevin2011
imkevin2011 哈哈对不起,问题我在楼下补充,代码中有注释没读出来
2 年多之前 回复

System.out.println(s.getName()+"..."+s.getAge());这一行代码中,s.getName()的原理是啥?我愣是搞不懂,该不会是固定格式吧..
s是否地址,地址调用getName方法吗?那为啥getName后不需要传参?不传参怎么返回值?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!