黑马程序员_抽象类、接口与多态


 ------- android培训java培训、期待与您交流! ----------

一、抽象类的特点:  

1)抽象方法一定在抽象类中;

2)抽象类必须被abstract关键字修饰;

3)抽象类不可以被new关键字创建对象,因为此类是对现实世界的深度共性抽取,描述抽象,所以,创建对象没有意义。

4)抽象类的方法要被使用,必须由子类复写所有的抽象方法后,建立子类对象调用,如果子类只覆写了部分抽象方法,那么子类还是一个抽象类,还是不可以创建对象。

注意:抽象类中可以一个抽象方法也没有,这样做,只是为了限制其创建对象。

二、接口:

1)接口中常见的定义:public static final+常量

                                            public abstract+抽象方法

2)接口的本质:接口是一种特殊的抽象类,它只包含常量和方法的定义,而没有变量和方法的实现。

3)接口的实现:由于它也不能创建对象,所以,通过一个关键字implement实现接口,并建立其实现类的实例对象,覆盖其中的所有抽象方法

4)接口与抽象类的区别:

           1.接口不能实现任何方法,而抽象类可以

           2抽象类可以实现多个接口,却只能有一个父类

           3)抽象类之间的继承关系,描述的是一类事物,是一个结构体系。接口不是类分级结构的一部分,没有联系的类事可以实现相同的接口

5)为什么java中多继承不行而多实现行呢?

      因为继承体系中,被继承的类中多数都有方法体,它们可能分别对方法进行了不同的实现,这样,如果,多继承,就会出现继承体系中一种方法多种实现,

使系统无法辨别应该是哪种实现而崩溃;而接口不一样,它没有方法体,即使多实现了,也是不同的子类各自实现自己的方法,不会冲突。

三、

1)多态:事物存在的多种体现状态,体现在程序上就是:在类与类之间存在着继承、实现或是覆盖这样的关系的时候,父类的引用指向了自己的子类的对象或者指向了自己类的子类对象。

          比如:         Animal  a=new Animal();

                                 Cat   c=(Cat)a;

2)多态中,jvm的态度:

            在编译时期:参阅引用型变量所属的类中是否有调用的方法,如果有,编译通过,没有,编译失败。

            在运行时期:参阅实例对象所属的类中是否有调用的方法,如果有,运行通过,没有,运行失败。

            简而言之:非静态成员函数在多态调用中,编译看左边,运行看右边。

               成员变量在多态调用中,无论编译或运行,都看左边。

                        静态的成员函数在多态的调用中,无论编译或运行,都看左边。


   -------  android培训 java培训 、期待与您交流! ----------


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值