A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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的值?

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

7 个回复

倒序浏览
那个是私有的,正常方法获取不到,
可以用反射:
String name = s.getClass().getDeclaredField("name").get(s);
回复 使用道具 举报
public String getName()
        {
                return name;
        }
  在父类或子类中要加上获取name属性值 的方法,再在主函数调用

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
王裕秋 发表于 2013-11-12 20:40
public String getName()
        {
                return name;

试了一下,真的可以,只要在父类里加上getName()方法就可以在主函数调用了。谢谢
回复 使用道具 举报
这个就是对象的封装!
写这个属性的get和set方法。
public getXXX  取值
public setXXX  设置值

回复 使用道具 举报
你已经建立了student的对象S;
想要得到对象S的name属性的值可以用域运算符".",
也就是S.name;
回复 使用道具 举报
嗯,可以在父类中通过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:55
8#
封装好要提供get  set方法啊。。没有的话怎么设置属性
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马