【一分钟知识】多态、抽象类与接口
1、构造器(constructor)是否可被重写(override)
-
构造器不能被继承,因此不能被重写,
-
可以被重载
-
2、eqauls方法和hashCode方法
-
两个对象相同(equals方法返回true),那么它们的hashCode值一定要相同
-
两个对象的hashCode相同,它们并不一定相同
-
3、String 类是final类,不可以被继承
4、String s = new String("xyz");创建了几个字符串对象
-
两个对象
-
一个是静态区的"xyz",一个是用new创建在堆上的对象
-
5、重载(Overload)和重写(Override)
-
重载
-
编译时的多态性
-
发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载
-
-
重写
-
运行时的多态性
-
发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型
-
-
6、抽象类(abstract class)和接口(interface)
-
都不能够实例化
-
一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类
-
接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法
-
抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是public的
-
抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量
-
有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法
-