黑马程序员——面向对象(多态与抽象类)

-----------android 培训 java培训 、java学习型技术博客、期待与您交流!------------
     今天学习多态与继承方面的知识,还是一句话重在理解。
     首先,多态的形式:
     简单的说就是父类的引用指向子类的对象。
     子父类成员的访问:
     1.父类对象的引用,不能访问子类的成员;
     2.子类对象的引用,可以访问:
      1).从父类继承的成员;
      2).自己的成员;
     多态的情况(父类指向子类对象):
     1.成员变量:
      1).父类没有,子类有:编译时,编译错误:找不到符号;
      2).父类没有,子类没有:编译时,编译错误:找不到符号;
      3).父类有,子类没有:编译通过,运行时:父类的;
      4).父类有,子类也有:编译通过。运行时:父类的;
    2.成员方法:
     1).父类没有,子类有:编译时,编译错误:找不到符号;
     2).父类没有,子类没有:编译时,编译错误:找不到符号;
     3).父类有,子类没有:编译通过,运行时:父类的;
     4).父类有,子类也有:编译通过,运行时:子类的;(方法在运行时是动态绑定的,绑定到当前调用的对象)
        汇总:
    1.多态时:
     1).编译时,如果父类没有,编译错误:找不到符号;
     2).运行时,对于被覆盖的成员变量,获取的父类的;对于被重写的成员方法,执行的是子类的;
      多态之中还有类型的强制转换,我觉得这种对象的强制转换和基本数据类型的转换有点相似。
      首先,当我们确定一个父类类型指向某一个之类的对象时,可以将父类类型转换成子类的类型。
      如果将一个父类类型转换为子类类型,在转换之前可以先进行判断,使用:instanceof运算符来判断:左边的变量是否是右边的类型
      最后,是关于抽象类,抽象类不能被实例化,创建抽象类没意义。
      1. 抽象类和一般类区别不大,类中出现不确定抽象的功能时,可以定义抽象方法,抽象方法没有方法主体。
      2.抽象类中可以有构造函数用来初始化成员变量.
      3.抽象关键字abstract不可以以下关键字共存。
    1).static。
    2).final : final类表示不能被继承,而abstract类就是被继承的,所以冲突;
            final方法表示不能被重写,而abstract方法就是被重写的,所以冲突;
    3).private :一个abstract方法就是被重写的,而private的成员在子类中无法访问;
     
    
    
                          -----------android培训java培训、java学习型技术博客、期待与您交流!------------
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值