接口

接口是java语言中的一种引用类型是方法的集合.如果说类中封装了成员变量\成员方法\构造方法,那么接口中主要封装了方法.包含抽象方法(jdk7及以前),默认方法和静态方法(jdk8),私有方法(jdk9).

接口用interface关键字,也会被编译成.class文件

接口不能创建对象,但可以被实现(implements),实现接口的子类必须实现接口的所有抽象方法,创建对象就可以调用方法了,否则该子类必须是抽象类

接口中含有抽象方法,默认方法和静态方法,私有方法和私有静态方法

接口的抽象方法用abstract关键字修饰(抽象类及抽象类中抽象方法的abstract不可以省略),可以省略,供子类实现使用

接口的默认方法用default修饰,不可省略,供子类调用或子类重写
接口的静态方法用static修饰,供接口直接调用
接口的私有方法用private修饰,供接口的默认方法或静态方法调用

类与接口的关系为实现关系,即类实现接口.该类可以称为接口的实现类也可以称为接口的子类.实现的动作类似于继承,但关键字不同,用implements

非抽象子类实现接口,必须重写接口所有的抽象方法,继承接口的默认方法可以直接调用也可以重写

接口的默认方法可以继承也可以重写,但只能由接口的实现类的对象来调用

接口静态方法与.class文件相关,只能被接口直接调用,不能被接口的实现类类名及对象调用

接口的私有方法,只有接口的默认方法可以调用.
接口的私有静态方法,可以被接口的默认方法及静态方法调用

如果一个接口中有多个默认方法,并且方法中有重复内容,那么可以抽取出来封装到一个私有方法中,供默认方法调用.从设计的角度讲,私有方法是对默认方法和静态方法的辅助

接口可以多实现,一个类可以继承一个父类并实现多个接口.实现的多个接口之间用逗号隔开

接口中有多个抽象方法的,实现类必须重写所有的抽象方法,抽象方法有重名的,只需重写一次

接口中有多个默认方法的,实现类都可以继承使用,如果默认方法有重名的,必须重写一次

实现的多个接口中静态方法重名的,并不影响,因为只能用接口名来调用静态方法

优先级问题:当一个类继承了一个父类又实现了多个接口,父类的成员方法和接口中的默认方法重名的,会就近选择执行父类的成员方法

一个接口能继承另外一个或多个接口(extends),如果继承的接口之间默认方法有重名的,那么子接口需要将该方法必须重写一次

子接口重写默认方法时default关键字需要保留,子类重写接口默认方法时default关键字不能保留

接口中没有构造方法,不能创建对象
接口中没有静态代码块
接口中无法定义成员变量,但可以定义常量,默认用public static final 修饰

多态:同一种事物具有多种不同的表现形式

多态的前提:1.必须有继承或实现 2.必须有方法的重写 3.必须有父类(接口)的引用指向子类的对象

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有会编译报错,如果有执行的是子类重写后的方法.

实际开发过程中,父类类型作为方法的形式参数,传递给方法的是子类对象,进行方法的调用,更能体现出多态的扩展性了便利性

多态可以使程序写的更简单并具有良好的扩展性

多态的转型分为向下转型和向上转型两种

向上转型:多态本身就是子类类型向父类类型向上转型的过程,该过程是默认的
当父类引用指向子类对象时就是向上转型
向下转型:父类类型向子类类型向下转换的过程,该过程是强制的
在多态中想要调用子类特有的方法必须向下转型

ClassCastException类型转换异常

instanceOf关键字 来判断一个对象是否属于某个类的实例 a instanceOf Cat 属于返回TRUE 不属于返回FALSE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值