1、多态是什么,多态的前提条件是什么?
多态:同一个对象(事物),在不同的时刻体现出来不同的状态。
举例:
猫是猫,猫是动物。
水(液体,固体,气态)
多态的前提:
A:要有继承关系
B:要有方法重写
C:要有父类引用指向子类的对象。
父 f = new 子();
2、多态中成员访问的特点分别是什么?
成员变量
编译看左边(父类),运行看左边(父类)
成员方法
编译看左边(父类),运行看右边(子类)。
静态方法
编译看左边(父类),运行看左边(父类)。
(静态和类相关,算不上重写,所以,访问还是左边的)
只有非静态的成员方法,编译看左边,运行看右边
3、什么是接口,它的特点是什么?
interface 关键字用来声明一个接口,它可以产生一个完全抽象的类,并且不提供任何具体实现。 interface 的特性整理如下:
1.接口中的方法可以有参数列表和返回类型,但不能有任何方法体。
2.接口中可以包含字段,但是会被隐式的声明为 static 和 final 。
3.接口中的字段只是被存储在该接口的静态存储区域内,而不属于该接口。
4.接口中的方法可以被声明为 public 或不声明,但结果都会按照 public 类型处理。
5.当实现一个接口时,需要将被定义的方法声明为 public 类型的,否则为默认访问类型, Java 编译器不允许这种情况。
6.如果没有实现接口中所有方法,那么创建的仍然是一个接口。
7.扩展一个接口来生成新的接口应使用关键字 extends ,实现一个接口使用 implements 。
8.接口中的方法是抽象方法(abstract),不能是静态方法(static).接口的所有方法都是抽象的,而抽象方法是没有static,有static的方法是不能override的,所以这样定义接口才有意义。
4、抽象类和接口的区别是什么?
第一点. 接口是抽象类的变体,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。
第二点. 接口可以多继承,抽象类不行
第三点. 接口定义方法,不能实现,而抽象类可以实现部分方法。
第四点. 接口中基本数据类型为static 而抽类象不是的。
第五点. 接口中不能含有静态代码块以及静态方法,而抽象类可以含有静态方法和静态代码块。
设计层面的讨论
模板式设计:就高级语言来说,每个类只能继承一个类。在这个类中,你必须继承或编写出其所有子类的所有共性。抽象类的功能要远超过接口,但是,定义抽象类的代价高。
辐射式设计:对行为的一种规范。虽然接口在功能上会弱化许多,但是它只是针对一个动作的描述。而且你可以在一个类中同时实现多个接口。在设计阶段会降低难度的。