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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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)

运行结果

运行结果

5 个回复

倒序浏览
  毕姥爷 a= new 毕老师();//多态   感觉好多知识理解的不透彻,
回复 使用道具 举报
tao13yang 发表于 2015-7-24 23:27
毕姥爷 a= new 毕老师();//多态   感觉好多知识理解的不透彻,

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