黑马程序员技术交流社区

标题: 困扰一礼拜的继承问题 毕老师毕姥爷 [打印本页]

作者: wuming123    时间: 2015-7-24 23:01
标题: 困扰一礼拜的继承问题 毕老师毕姥爷
class  毕姥爷
{
      void jiangKe()
    {
         System.out.println("语言");
  }
    void diaoYu()
  {
       System.out.println("去钓鱼");
  }
}
class 毕老师 extends 毕姥爷
{
   void jiangKe()
  {
     System.out.println("java");
  }
      void  kanDianYing()
  {
      System.out.println("去看电影");
  }
}
class Demo
  {
   public static  void  main(String []args)
          {
            毕老师 b= new 毕老师();
        b.jiangKe();
        b.kanDianYing();

        毕姥爷 a= new 毕老师();
        a.jiangKe();
        a.diaoYu();
          }   
  }
非静态类中的成员函数  向上转型 会按照子类中复写的运行  运行毕老师的java  编译看右运行看左   子类中的特有函数会无法调用
                    成员变量  会按照父类中的运行  与子类无关   编译看右运行看右
如果是静态的  会运行父类中的  编译运行看右

1.jpg (6.53 KB, 下载次数: 0)

运行结果

运行结果

作者: tao13yang    时间: 2015-7-24 23:27
  毕姥爷 a= new 毕老师();//多态   感觉好多知识理解的不透彻,
作者: wuming123    时间: 2015-7-26 09:59
tao13yang 发表于 2015-7-24 23:27
毕姥爷 a= new 毕老师();//多态   感觉好多知识理解的不透彻,

看视频的同时  再看看笔记 结合着来  视频讲的太快
作者: Chans_宇    时间: 2015-7-27 01:20
你 可以试着这样理解:多态其实就是指的是事物的多种形态,也就是说,这里的理解角度是:实例对象是唯一且确定了的,你就是你,但是你引用的身份不同,就可以表示为不同代表或层次的对象,例如,你还是你,是唯一且确定的实例,你代表的身份是学生时,你就是学生对象,就具备学生这类的属性和学习的方法;再者,你还是你,当你兼职做外卖时,你引用的数据类型就是送外卖人员这个类,那么你这个时候就是送外卖人员这个类的实现对象,具备送外卖人员这个类的属性和送外卖的方法而不具备学生的特有属性和学习方法,这里我们可以将学生和送外卖人员这两个类再向上抽取出“人”这个父类,无论你是作为学生还是送外卖的,你都可以具备人这个类的属性和方法。说深层一点,其实确定一个对象,无非就确定3个部分:对象的引用数据类型、对象的属性、对象的方法。我们在创建一个对象写new语句的时候,无非就是计算机在逻辑上实现这三点。
作者: Chans_宇    时间: 2015-7-27 01:26
又想了一下补充说明:准确来说,现实中对象其实就只需明确属性和方法即可,但计算实现逻辑有点不一样,它需要加载引用数据类型去明确对象对属性和方法引导逻辑关系。
作者: 郁金香大公爵    时间: 2015-7-27 08:53
学习了,各位说的真好




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