抽象类和接口

抽象类:Abstract关键字,就是拿来装抽象方法的
所以,抽象方法一定在抽象类里,但是抽象类里不一定有抽象方法

=================================================================

接口:interface关键字,也是拿来装抽象方法的

public interface IUsb3_0 {
	/**全局常量;默认都会有一个public static final修饰成员变量*/
	int MAX_VAULE=1;
	
	/**
	 * 只有在接口里能这样写,方法前面有默认public abstract
	 * 这是抽象方法
	 */
	void power();
	
	void dataTransfer();
	
	/**
	 * jdk1.7之后,提供默认和静态方法,增强扩展性
	 */
	public default void testDefault() {
		System.out.println("testDefault");
	}
	
	public static void testStatic() {
		System.out.println("testStatic");
	}
}

注意事项
1. 如果接口中只有一个抽象方法,该接口就是函数式接口,函数式接口可以用@FunctionalInterface注解修饰
2. 函数式接口可以使用jdk8新特性lambda表达式

IAli i =new IAli() {
	@Override
	public void aliPay() {
		System.out.println("匿名内部类");
	}
};
i.aliPay();
		
//lamda表达式就是简化函数式接口的匿名内部类
IAli i2 =() ->System.out.println("lamda表达式");
i2.aliPay();

=================================================================
二者对比:
1、接口没有构造方法,抽象类有,但是二者都不能new对象
2、抽象类的命名规则:类的名前面加上Abstract
接口命名规则:IXxx 接口实现类命名规则:接口名Impl
3、实现接口:implements关键字、继承类:extends关键字
4、单继承、多实现
5、类和类:单继承 类和接口:多实现 接口和接口:多继承

二者使用:抽象类写常规功能、接口写特别功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值