一.抽象
1.抽象方法:
没有方法体,{}没有,并且使用abstract 修饰的方法
2.注意:
- 1、抽象方法所在的类一定是抽象类
- 2、子类继承父类后,一定要实现(重写)父类中所有的抽象方法,除非子类也是抽象的
- 3、抽象方法约束了其子类必须实现(重写)父类中的抽象方法
3.抽象类:(用abstract修饰的类)
特点:
- 1、抽象类不能被实例化 不能被new
- 2、抽象类有构造方法 子类构造方法中可以通过super调用父类构造方法进行属性的初始化
- 3、抽象类中可以有抽象方法,也可以有非抽象方法
二.接口(interface)
1.
继承:描述的是类之间的is-a关系,特点是基类单继承,传递性
接口:描述的是具有的能力,has-a,把有的"行为"声明在接口interface
语法:
public class Student1902 extends PG implements FootBall{
}
- public class 子类 继承 父类 实现 接口1,接口2
2.接口特点:
1、接口中的方法必须是公共的、抽象的方法
但是public abstract可以省略
2、接口中的变量都是public static final
但是public static可以省略
3、接口不能被实例化 不能被new
4、接口没有构造方法
5、接口是对Java中基类单继承的扩展(只能继承一个父类,但是可以“继承”多个接口)
3.[说明]
- 类在实现接口后,一定要实现接口中的所有方法,除非类是抽象
- 接口自身也可以继承接口,接口多继承
- 接口分离原则:接口中的方法分类越详细越好
4. 选择抽象类、接口的依据:
- 1、is-a 还是 has-a的关系
- 2、单继承还是多实现
5.面试题
接口和抽象类的区别? 什么时候使用抽象类?什么时候使用接口?
1、抽象类中既可以有抽象方法,也可以有非抽象方法
接口中的方法必须是公共的、抽象的
2、抽象类中的属性是普通属性
接口中的变量必须具有public static final 必须赋值
3、抽象类有构造方法,而接口没有构造方法
4、继承(实现) 抽象类是类,只能单继承,而接口可以多实现
注意:
equals与hashCode有两个注意点:
equals相同,则hashCode相同;而hashCode相同,equals不一定相同
如果equals相同,hashCode不相同,有可能会造成上述重复值等情况,这种情况是不允许的;
而hasCode相同,但是equals不一定相同,有可能是因为发生了碰撞而碰撞是有可能性发生的

被折叠的 条评论
为什么被折叠?



