抽象类和抽象方法接口和多态
Posted 诀别~雪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象类和抽象方法接口和多态相关的知识,希望对你有一定的参考价值。
抽象类与普通类的区别:
1、抽象类中可以写抽象方法,普通类不可以;
2、抽象类不能直接创建对象,普通类可以;
3、抽象类中可以没有抽象方法,但是仍然不能创建对象。
抽象类的常见问题
1、抽象类一定是父类,因为是不断向上抽取而来。
2、实际开发中,建议先写抽象的父类,在根据具体的子类编写功能。
3、有抽象方法的类一定是抽象类,在抽象类中,可以没有抽象方法。
没有抽象方法的类是一种特殊的设计模式;(适配器模式)
4、如果抽象A定义了一个抽象的a方法,如果B类继承A的时候,没有重写a方法,B类也必须抽象。
(接口和多态)
接口中只能写两种成员:一种是常量(需要使用final关键字修饰),另一种是抽象方法
接口不能直接创建对象
接口可以继承接口,而且可以多继承
接口与类之间的关系,只能是类实现接口
一个类在继承另一个类的时候,可以实现多个接口
当子类实现多个接口时,出现相同的方法规范时,只需要重写一次即可。
该类必须重写接口中所有的抽象方法;如果不能全部重写,那么这个类只能是抽象类。
接口与抽象类的区别:
相同点:
1、都不能创建对象
2、都可以写抽象方法
3、都必须有子类才可以创建子类的对象
多态:
表现形式:父类或接口类型 变量名 = new 子类();
多态必须有继承或实现,才可以实现多态的形式
多态形式下方法执行的规则
当父类有某个方法的时候(不论是否为抽象方法),多态形式下的子类对象,都可以调用该方法
,如果父类中没有这个方法(子类中有),那么多态形式下的子类对象是 不能直接调用子类独有的方法。
总结:编译看左边,运行看右边;
多态形式下的成员变量:编译和运行都看左边
多态的类型转换
类型的自动提升
小转大,java自动转型
大的数据类型 变量名 = 小的数据值
强制类型转换
大的数据类型 变量名 = (大的数据类型)被转换的对象
instanceof关键字用来判断多态形式下的对象的原始类型
格式:多态形式的对象 instanceof 数据类型,返回值类型为boolean类型
类型强制下降
以上是关于抽象类和抽象方法接口和多态的主要内容,如果未能解决你的问题,请参考以下文章