查缺补漏(一)Java抽象类和接口

抽象类

1)当一个类中定义了抽象方法,则该类必须标记为抽象类。
2)如果一个类中没有抽象方法,则该类也可以标记为抽象类。
3)抽象类不能实例化。
4)可以定义一个抽象类的对象,但是他只能引用该类非抽象子类的对象。
5) 从设计层面来说,抽象是对类的抽象,是一种模板设计。

接口

1)同样,接口不能实例化,但是可以申明变量,其必须引用实现了接口的类对象。
2)接口中可以包含常量(默认是public static final)。
3)引入接口的原因:一个类只能继承一个父类,但是可以实现多个接口是。
4)Java SE8之后,允许在接口中增加静态方法,但是不太规范。
5)可以用default修饰符标记为接口方法提供一个默认实现。
6) 从设计层面来说,接口是对行为的抽象,是一种行为的规范。

public interface Comparable<T> {
    public default int compareTo(T o) {return 0;}
}

默认方法冲突

  1. 超类优先
    如果超类提供了一个具体方法,同名而且有相同参数类型的默认方法会被忽略。
  2. 接口冲突
    当一个类同时实现了两个接口时,如果这两个接口有同名的默认方法,则必须由程序员解决冲突。如果这两个接口中同名的方法其中一个是默认方法,其中一个不是默认方法,也需要程序员解决冲突。除非实现的接口中的同名的方法都是未实现的(有一个实现(是默认方法)都不行)。解决冲突方法如下:
class Student implements Person, Named {
    public String getName () { 
    	return Person.super.getName(); 
    } 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值