10.抽象和接口

一.抽象

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不一定相同,有可能是因为发生了碰撞而碰撞是有可能性发生的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值