Java学习笔记 -- 多态与抽象类

多态的前提:1、有继承或者有接口实现

                      2、有子类重写调用方法

                      3、父类引用子类对象  

      可以理解为一个方法的多种状态 -》 多态           

向上转型     子类对象自动类型提升 子类对象被赋值给了父类对象

           即      父亲的引用指向了子类对象    儿子变成了父亲

        eg :  animal = cat   animal.show()   //ptl Cat.show()

但是 注意的是 此时的 animal 不能调用Cat类自己独有的属性和方法,即便animal是由Cat升上来的

可以这样理解 当一个儿子变成了父亲,以前喜欢玩游戏,长大了就不喜欢玩了

向下转型  当父类想要使用子类对象特有的属性和方法的时候,就强制类型转化  前提有上转型

Cat  cat2 = (Cat)animal;      cat2.catRun() // catRun() Cat特有

instanceof 关键字   用来判断  左边对象是否是右边的类

          animal instanceof Cat // False  

          animal instanceof  Animal //True

易错点:要想有下转型 必须要先执行上转型

eg    Animal   animal  =new Animal();

        Cat  c = (Cat)  animal; // error 类型转化失败

        c.catRun();

 修正:

eg    Animal   animal  =new Animal();

        Cat  cat = new Cat();

        animal  = cat;    // 下转型  父类引用指向子类对象   

        Cat  c = (Cat)  animal; // 上转型      此时 animal 本身就是 Cat类对象

        c.catRun();

  ---------------------------------------------------------------------------------------------

抽象关键字 abstract

当父类的引用指向子类对象时,访问的都是子类经过重写的方法,得到的都是子类对象当前的状态参数,所以父类的某一些方法只是规定了子类必须拥有这些方法(需要重写),而父类本身是没有机会去实例对象调用这些方法的,所以基本不写方法体

抽象方法:没有方法体的方法,就是没有方法的具体实现      加上 abstract 关键字

public abstract  void  show();  // 有抽象方法 ,类也要加上抽象关键字,形成抽象类

但是有抽象类不一定有抽象方法

抽象类不可以new 对象,因为抽象类中可能存在抽象方法,如果可以new对象,就一点可以访问方法,而抽象方法没有方法体,是不可以访问的,所以抽象类不可以new 对象

抽象类的用途:当模板使用,能自己实现的方法就不设置抽象方法,不能实现的方法就设置抽象方法,交由子类去实现具体的业务逻辑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值