黑马程序员技术交流社区

标题: 坐等解答,请问这段程序怎么获取name的值? [打印本页]

作者: 马富林    时间: 2013-11-12 20:27
标题: 坐等解答,请问这段程序怎么获取name的值?
class Person
{
    private String name;
    Person(String name)
    {
        this.name=name;
    }
}

class Student extends Person
{
    Student(String name)
    {
        super(name);
    }
}
class Demo
{
  public static void main(String[] args)
  {
  Student s=new Student("张三");
  }
}
程序如上,请问当需要获取Student对象s的name属性值的时候,应该在主函数里用什么语句来获取name的值?


作者: 零下五度的水    时间: 2013-11-12 20:37
那个是私有的,正常方法获取不到,
可以用反射:
String name = s.getClass().getDeclaredField("name").get(s);

作者: 王裕秋    时间: 2013-11-12 20:40
public String getName()
        {
                return name;
        }
  在父类或子类中要加上获取name属性值 的方法,再在主函数调用
作者: 马富林    时间: 2013-11-12 20:47
王裕秋 发表于 2013-11-12 20:40
public String getName()
        {
                return name;

试了一下,真的可以,只要在父类里加上getName()方法就可以在主函数调用了。谢谢
作者: 王雨神    时间: 2013-11-12 22:16
这个就是对象的封装!
写这个属性的get和set方法。
public getXXX  取值
public setXXX  设置值


作者: smileven    时间: 2013-11-12 22:25
你已经建立了student的对象S;
想要得到对象S的name属性的值可以用域运算符".",
也就是S.name;
作者: mayor125    时间: 2013-11-12 22:56
嗯,可以在父类中通过setter和getter方法来获取父类中被封装的name属性的值。
  1. class Person
  2. {
  3.         private String name;
  4.         Person(String name)
  5.         {
  6.                 this.name = name;
  7.         }

  8.         public void print()
  9.         {
  10.                 System.out.println("姓名:"+name);
  11.         }

  12.         public String getName()
  13.         {
  14.                 return name;
  15.         }
  16. }

  17. class Student extends Person
  18. {
  19.         Student(String name)
  20.         {
  21.                 super(name);
  22.         }
  23. }

  24. public class Demo
  25. {
  26.         public static void main(String[] args)
  27.         {
  28.                 Student s = new Student("张三");
  29.                 s.print();
  30.         }
  31. }
复制代码

作者: 徐君    时间: 2013-11-13 01:01
封装好要提供get  set方法啊。。没有的话怎么设置属性




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2