黑马程序员技术交流社区

标题: 继承中的小问题 求解 [打印本页]

作者: 待解封的小刀    时间: 2014-7-12 14:45
标题: 继承中的小问题 求解
请问 大神们  父类中有些 private的变量,然后父类中提供了调用这些变量的办法。假如子类去继承extents父类   请问 继承后  子类类中有这些 变量吗? 对子类建立对象,可以调用这些变量吗、?  求解答
结合事例:
class Employee    父类
{
        private String name;
        private String id;
        private double pay;   变量进行私有化
        Employee(String name,String id,double pay)   构造函数 对象初始化
        {
                this.name=name;
                this.id=id;
                this.pay=pay;
        }
        public  void work()  调用这些参数
        {
               
                System.out.println("name="+name+"id="+id+"pay="+pay);
       
        }

}
class Manager extends Employee    子类
{`           private int bouns;
        Manager(String name,String id,double pay,int bouns)
        {
                super(name,id,pay);      调用父类中的变量
               
                this.bouns=bouns;
        }
        public void work()
        {
                System.out.println("name="+name+"id="+id+"pay="+pay+"bouns="+bouns);
        }
class EmployeeDemo   
{
        public static void main(String[] args)
        {
       
                Manager M=new Manager("lisi","000X55",324.98,456);
               
                M.work();
        }


大神们  上面的会显示错误  说 name id 和pay  会访问到private 中的name  id 和pay  求解 这个是怎么回事  我的程序  感觉没问题啊  怎么就继承不下来呢?  如果要显示结果 怎么做啊?不要把私有的内容去掉,,,,这种方法 可以 但是不合理。。。。求解合理的方法。
作者: 咖啡苏克    时间: 2014-7-12 21:47
你把父类中的成员变量私有之后,子类自然就继承不了父类的私有变量了,用get/set方法
  1. class Employee {
  2.         private String name;
  3.         private String id;
  4.         private double pay;

  5.         public String getName() {
  6.                 return name;
  7.         }

  8.         public void setName(String name) {
  9.                 this.name = name;
  10.         }

  11.         public String getId() {
  12.                 return id;
  13.         }

  14.         public void setId(String id) {
  15.                 this.id = id;
  16.         }

  17.         public double getPay() {
  18.                 return pay;
  19.         }

  20.         public void setPay(double pay) {
  21.                 this.pay = pay;
  22.         }

  23.         public Employee(String name, String id, double pay) {
  24.                 super();
  25.                 this.name = name;
  26.                 this.id = id;
  27.                 this.pay = pay;
  28.         }

  29.         public void work() {

  30.                 System.out.println("name=" + name + "id=" + id + "pay=" + pay);

  31.         }

  32. }
复制代码

作者: 377413612    时间: 2015-1-27 23:40
谢谢了 !




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