接口是用来定义规范的(自上向下),接口不能直接实例化对象,需要通过其子类向上转型实来例化对象
接口中的默认变量 public static final 修饰
接口中的默认方法 public abstract 修饰
package com.jh.bffapi.demo;
/**
* 数据线功能 - 接口工厂
*/
public interface CableFunctionFactory {
/**
* TODO 默认变量 public static final 修饰
*/
public static final String FUNCTION = "这里整合了所有有关数据线的功能";
/**
* 数据传输
* TODO 默认方法 public abstract 修饰
*/
public abstract void transmission();
/**
* 充电
* TODO 默认方法 public abstract 修饰
*/
public abstract void charging();
}
抽象类是对其所有子类公共方法的抽象(自下向上),抽象类不能直接实例化对象,需要通过其子类向上转型实来例化对象
通过抽象类实现接口,可以选择性覆盖接口中的抽方法
package com.jh.bffapi.demo;
/**
* 数据线功能 - Lightning型号抽象类
*/
public abstract class CableFunctionLightningAbstractProduct implements CableFunctionFactory {
static {
System.out.println("LightningAbstractProduct静态方法块");
}
public CableFunctionLightningAbstractProduct() {
System.out.println("LightningAbstractProduct构造函数");
}
/**
* 数据传输
*/
@Override
public void transmission() {
System.out.println("LightningAbstractProduct - transmission");
}
/**
* 充电
*/
@Override
public void charging() {
System.out.println("LightningAbstractProduct - charging");
}
}
类只能实现单继承,通过继承可以对父类的方法进行重写或拓展
package com.jh.bffapi.demo;
/**
* IPhone13商品
*/
public class IPhone13Product extends CableFunctionLightningAbstractProduct {
static {
System.out.println("IPhone13Product静态方法块");
}
public IPhone13Product() {
System.out.println("IPhone13Product构造函数");
}
/**
* 数据传输
*/
@Override
public void transmission() {
super.transmission();
System.out.println("IPhone13Product transmission");
}
/**
* 充电
*/
@Override
public void charging() {
super.charging();
System.out.println("IPhone13Product charging");
}
}
测试:类初始化的时候,静态代码块优先级最高,其次是构造函数
package com.jh.bffapi.demo;
public class Test {
public static void main(String[] args) {
/**
* LightningAbstractProduct静态方法块
* IPhone13Product静态方法块
*
* LightningAbstractProduct构造函数
* IPhone13Product构造函数
*
* LightningAbstractProduct - transmission
* IPhone13Product transmission
*/
CableFunctionLightningAbstractProduct cableFunctionLightning = new IPhone13Product(); // 向上转型
cableFunctionLightning.transmission();
}
}