黑马程序员技术交流社区
标题:
私有 、继承 、重写三个知识点联系起来想问个为题,求解.
[打印本页]
作者:
王广亚
时间:
2013-7-5 17:24
标题:
私有 、继承 、重写三个知识点联系起来想问个为题,求解.
本帖最后由 王广亚 于 2013-7-5 18:34 编辑
首先第一个问题:子类能不能从父类继承父类的私有变量和方法?
如果能的话,请看在视频教程上第七天的第5节有这样一段
<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>}
</p><p> </p>
复制代码
如果不能的话在视频教程的第七天的第十节抽象类的练习中有这样一段代码
(不知道这段代码是毕老师只为讲述抽象类而随便写的还是真的是没有错误的代码?)
<p>abstract class Employee{
private String name; //如果私有成员不能被继承的话此处定义个name又有何用?下面的子类如果创建对象能够被初始化吗?
private String id;
private double pay;
Employee(String name,String id,double pay){
this.name=name;
this.id=id;
this.pay=pay;
}
public abstract void work();
}
class Manager extends Employee{
private int bonus;
Manager(String name,String id,double pay,int bonus){
super(name,id,pay); //此处调用了父类的构造方法
this.bonus=bonus;
}
public void work(){
System.out.print("manager work");
}
}
class Pro extends Employee{
Pro(String name, String id, double pay) {
super(name, id, pay); //此处也调用了父类的构造方法
}
public void work(){
System.out.print("Por work");
}
}</p><p>/*</p><p>毕老师没有在教程中没有写主函数,我在这为了测试随便加一个主函数用来创建一个子类的对象,但调用变量时,当场报错,不知道是不是我这个主函数有问题,还是让我测试到私有成员不能被子类继承。</p><p>*/</p><p>public class question {
public static void main(String[] args) {
Pro p=new Pro("zhangsan","jisu01",1000);
System.out.print(p.name); //在编辑器中此处报错
}
}</p>
复制代码
作者:
王广亚
时间:
2013-7-5 17:26
怎么回事,怎么代码里这么多换行标签?
作者:
刘_鑫
时间:
2013-7-5 17:36
子类不能从父类继承私有成员,但可以通过间接的方式获取。
作者:
王广亚
时间:
2013-7-5 17:48
刘_鑫 发表于 2013-7-5 17:36
子类不能从父类继承私有成员,但可以通过间接的方式获取。
是子类对象调用父类方法吗?
作者:
denghui1010
时间:
2013-7-5 18:02
私有成员肯定不能被子类继承
但不是说没用
可以在Employee类中定义一个getName方法用来获取姓名
如String getName()
{
return name;
}
输出语句改为System.out.print(p.getName());
作者:
王广亚
时间:
2013-7-5 18:33
嗯,谢谢大家!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2