问题记录二

  1. 自限定型、枚举Enum<E extends Enum< E >>
  2. 反射、Class
  3. 接口中的所有方法自动地属于public,因此在接口中声明方法时,不必提供关键字public。但是在类中实现接口的时候一定要显式地将实现的方法声明为public
  4. 接口中不能包含有实例域,但是可以包含常量,并且接口中的域将被自动设为public static final
  5. 接口不是类,所以我们不能实例化一个接口,但是我们可以声明接口的变量:Comparable x;
    并且接口变量只能够引用实现了接口的类对象:x=new Employe("Tom",10000);
  6. 如同使用instanceof来检查一个对象是否属于某个特定类一样,也可以使用instanceof检查一个对象是否实现了某个特定接口:if(anObject instance Comparable) {...}
  7. 接口也可以被拓展,用extends关键字
  8. Java中可以多级继承,但是不存在多重继承
  9. 可以为接口提供一个默认实现,必须用default修饰符标记这样一个方法
    默认方法的一个重要作用是接口演化,假如说库里面的某个接口添加了一个方法,但是之前继承过这个接口的类没有实现这个接口,那么就会无法编译。而我们添加了默认函数就可以避免这种事情,让旧的代码兼容新的jdk
//可能我们只需要关注前两个事件
public interface MouseListener{
	default void mouseClicked(MouseEvent event) {}
	default void mousePressed(MouseEvent event) {}
	default void mouseReleased(MouseEvent event) {}
	default void mouseEntered(MouseEvent event) {}
	default void mouseExited(MouseEvent event) {}
  1. 接口冲突:如果先在一个接口中将一个方法定义为默认方法,然后又在超类或者另一个接口中定义了同样的方法,就会发生接口冲突,因为编译器不知道你要调用的是哪个方法。有两个原则:
    超类优先:如果超类提供了一个具体方法,同名并且有相同参数类型的接口默认方法会被忽略
    超接口冲突:如果一个超接口提供了一个默认方法,另一个接口提供了一个同名并且参数类型相同的方法,则必须覆盖这个方法来解决问题(编译器会报错)
    我们来看一下第二种
interfce Named{
	default String getName(){
		return getClass().getName()+"_"+hashCode();
}	

class Student implements Person,Named{
	//要覆盖掉
	public String getName(){
		return Person.super.getName(); //指明用的哪一个就好了
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值