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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王广亚 于 2013-7-5 18:34 编辑

首先第一个问题:子类能不能从父类继承父类的私有变量和方法?

如果能的话,请看在视频教程上第七天的第5节有这样一段
  1. <p>class Fu{</p><p>void show(){</p><p>System.out.println("Fu show");</p><p>}</p><p>prinvate void speak(){     //注意此处是私有函数</p><p>System.out.println("vb");</p><p>}</p><p>}</p><p>class Zi extends Fu{</p><p>void speak(){                //教程上说此处不叫复写,原因是Fu类私有化,Zi类不知道Fu类有speak方法,就不叫重写。</p><p>System.out.println("java");</p><p>}</p><p>void Show(){</p><p>System.out.println("zi show");</p><p>}</p><p>}
  2. </p><p> </p>
复制代码
如果不能的话在视频教程的第七天的第十节抽象类的练习中有这样一段代码
(不知道这段代码是毕老师只为讲述抽象类而随便写的还是真的是没有错误的代码?)
  1. <p>abstract class Employee{
  2.         private String name;           //如果私有成员不能被继承的话此处定义个name又有何用?下面的子类如果创建对象能够被初始化吗?
  3.         private String id;
  4.         private double pay;
  5.         Employee(String name,String id,double pay){
  6.                 this.name=name;
  7.                 this.id=id;
  8.                 this.pay=pay;
  9.         }
  10.         public abstract void work();
  11. }
  12. class Manager extends Employee{
  13.         private int bonus;
  14.         Manager(String name,String id,double pay,int bonus){
  15.                 super(name,id,pay);                                                 //此处调用了父类的构造方法
  16.          this.bonus=bonus;
  17.         }
  18.         public void work(){
  19.                 System.out.print("manager work");
  20.         }
  21. }
  22. class Pro extends Employee{

  23.         Pro(String name, String id, double pay) {
  24.                 super(name, id, pay);                                              //此处也调用了父类的构造方法
  25.         }
  26.         public void work(){
  27.                 System.out.print("Por work");
  28.         }
  29. }</p><p>/*</p><p>毕老师没有在教程中没有写主函数,我在这为了测试随便加一个主函数用来创建一个子类的对象,但调用变量时,当场报错,不知道是不是我这个主函数有问题,还是让我测试到私有成员不能被子类继承。</p><p>*/</p><p>public class question {
  30. public static void main(String[] args) {
  31.   Pro p=new Pro("zhangsan","jisu01",1000);
  32.   System.out.print(p.name);                       //在编辑器中此处报错
  33. }
  34. }</p>
复制代码

评分

参与人数 1技术分 +1 收起 理由
赵海洋 + 1 很给力!

查看全部评分

5 个回复

倒序浏览
怎么回事,怎么代码里这么多换行标签?
回复 使用道具 举报
子类不能从父类继承私有成员,但可以通过间接的方式获取。
回复 使用道具 举报
刘_鑫 发表于 2013-7-5 17:36
子类不能从父类继承私有成员,但可以通过间接的方式获取。

是子类对象调用父类方法吗?
回复 使用道具 举报
私有成员肯定不能被子类继承
但不是说没用
可以在Employee类中定义一个getName方法用来获取姓名
如String getName()
    {
            return name;
    }
输出语句改为System.out.print(p.getName());

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
嗯,谢谢大家!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马