当前位置:  技术问答>java相关

初学者对于超类和子类的简单问题,请高手赐教!

    来源: 互联网  发布时间:2015-02-10

    本文导语:  1)Manager boss=new Manager("Carl Hacker",75000);    boss.setSecretaryName("Harry Hacker");    Employee staff=new Employee;    staff=boss; 2)staff=(Manager) new Manager("Carl Hacker",75000);             staff.setSecretaryName("Harry Hacker"); 以上代码...


1)Manager boss=new Manager("Carl Hacker",75000);
   boss.setSecretaryName("Harry Hacker");
   Employee staff=new Employee;
   staff=boss;

2)staff=(Manager) new Manager("Carl Hacker",75000);         

   staff.setSecretaryName("Harry Hacker");

以上代码中Manager是Employee的子类,setSecretaryName是Manager 的一个方法,

为什么第一种可以,第二种不可以?

|
第一个是对的,“staff=boss;”是增宽cast

第二个不能编译,是因为:
staff的type是父类Employee,而父类不包括setSecretaryName这个方法,
所以不行;如果父类包括setSecretaryName这个方法,则这时就会进行
override,就可以了,这时子类的setSecretaryName方法会被执行,
这是override的一个典型例子

如果setSecretaryName是静态方法,则将会进行hide(而不是override),详见
下面的例子

简单来说,父类中必须有setSecretaryName,这时将会进行override/hide,
否则不能编译


class Father{
public void myMethod0(){
System.out.println("in Father, instance-method");
}

public static void myMethod1(){
System.out.println("in Father, static-method");
}
}


class Son extends Father{
public void myMethod0(){
System.out.println("in Son, instance-method");
}

public static void myMethod1(){
System.out.println("in Son, static-method");
}
}


public class FatherSon{
public static void main(String[] args){
        Son son=new Son();
        Father father=son;

        son.myMethod0();
        father.myMethod0();

son.myMethod1();
        father.myMethod1();
}
}


输出结果是:
in Son, instance-method
in Son, instance-method
in Son, static-method
in Father, static-method

|
打个比方,circle是shape的子类,我们可以说circle是shape,但却不能确定shape一定就是circle,所以不行。

|
派生类是由基类产生的.
所以基类有的派生类上都有.反之则不一定成立.
若有一个人的基"类",都有头,但不一定有"老婆".所以这样一想你就会明白的,是吗?

|
我觉得第一个也是不可以的,因为boss中有的方法staff中不一定会有,所以是不能把赋值,而且
如果把第二个中的(Manager)去掉也是可以的吧。我是一位新手,这是我的一些认识 ,不知道对不对,乱说了。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 初学者的困惑,请各位大侠赐教。
  • 初学者的疑惑,请各位赐教: 异常处理
  • telnet登录时,普通用户可以登录成功,但用root用户为什么登录不上?Linux初学者,请高手赐教
  • 我是初学者,有几个问题,想请教各位高手,望不吝赐教
  • 初学者的疑惑??前辈请不吝赐教!
  • 初学者的问题:如何构建最简单的jsp开发环境?望不吝赐教!
  • 又一个初学者的困惑!如果您是个大虾,请你一定要进来看看,指点迷津!如果您也是个初学者,那么您也一定要进来,也许我们有一样的遭遇!
  • 初学者的问题我是linux初学者,我想问一下在windows里下载的大于1.44M文件如何转移到linux分区里?
  • 我是个初学者,希望指点明津
  • 初学者用什么工具好?JBUILDER?JDK?
  • 对于初学者应该看什么样的java书籍
  • 对于初学者应该看什么样的书
  • 初学者:不是问题的问题?
  • 初学者这样检验自己的学习效果呢?
  • 初学者的问题??在线等待。
  • linux初学者应该看什么书
  • unix/linux知识 iis7站长之家
  • 我是初学者,该用什么java的“编译器”????
  • Free Java的初始设置问题----初学者求教.
  • 各位大虾,一个初学者该怎样开始学习java?
  • 熟悉weblogic&ejb2.0的请进(初学者就不用看了)
  • 怎样学习Java,我是个初学者。
  • 我是一个java初学者
  • 初学者的问题!
  • 小弟是初学者,请推荐几本不错的unix书籍。
  • 请指点:初学者应怎样学习?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3