java中几个易混淆概念的区分
接口和抽象类
相同点
- 都可以有抽象方法
- 都不能直接实例化
相同点
- 一个类可以实现多个接口,但是只能继承一个类
- 抽象类的成员变量可以是各种类型的,接口的成员变量只能是public static final类型的
- 抽象类中可以有静态代码块,接口里面不能含有静态代码块
- 抽象类可以有构造方法,接口中不能有构造方法。
重载和重写
- 重载是编译时的多态性,发生在同一个类中,方法名一样,有不同的参数列表(参数类型或者参数个数)
- 重写是运行时的多态性,发生在子类与父类之间,重写要求子类与父类有相同的参数列表,有兼容的返回类型(比父类被重写的方法更好访问,不能比父类被重写的方法声明更多的异常)
== 和 equal
对于基本类型来说
- == 比较的是之
- equal不能用来比较基本类型
对于引用类型
- == 比较的是对象的引用地址
- equal如果不重写的话和==是一样的,都是比较引用地址,不过很多类都重写了equal方法,判断他的内容相等就返回True了