Java8接口
常量:publicstaticfinal抽象方法:publicabstract默认方法:defalut,子类可以重写也可以不重写静态方法:static
public interface Shape {
int length = 0;//常量 public static final
Double getArea(double length, double width);//抽象方法 public abstract
//问题:所有子类必须都要实现该方法
//Double getPerimeterOfQuadrilateral(double length, double width);
/**
* 新增默认方法,为圆形计算周长
*
* @param redius 半径
* @return java.lang.Double
*/
default Double getPerimeterOfCircle(double redius) {
return 3.14 * 2 * redius;
}
/**
* 新增默认方法,为四边形扩展计算周长
*
* @param length 长
* @param width 款
* @return java.lang.Double
*/
default Double getPerimeterOfQuadrilateral(double length, double width) {
return (length + width) * 2;
}
default void print(){}//默认方法空实现
/**
* 接口描述方法,描述接口用途及其他信息
*
* @return java.lang.String
*/
static String describe() {
return '我是一个几何图形接口';
}
}
public class Circle implements Shape {
@Override
public Double getArea(double length, double width) {
//调用方法时默认length传半径
return 3.14 * length * length;
}
public String staticMethod() {
return Shape.describe();
}
}
public class Trangle implements Shape{
@Override
public Double getArea(double length, double width) {
return length * width / 2;
}
}
public class DefaultMethodTest {
public static void main(String[] args) {
System.out.println(new Circle().getPerimeterOfCircle(3));
System.out.println('-------------------------------------------');
System.out.println(Shape.describe());//我是一个几何图形接口
System.out.println(new Circle().staticMethod());//我是一个几何图形接口
}
}
抽象类
常量变量构造方法抽象方法非抽象方法
接口和抽象类区别
抽象类和接口的详解_chajinglong的专栏-CSDN博客_抽象类实例
实例化:抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象;接口变量必须指向实现所有接口方法的类对象。子类:抽象类要被子类继承;接口要被类实现。抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。实现接口时,如果不能全部实现接口方法,那么该类也只能为抽象类。变量:接口里定义的变量只能是公共的静态的常量;抽象类中的变量是普通变量。方法:接口有抽象方法、默认方法、静态方法;抽象类中有抽象方法和非抽象方法,抽象类里可以没有抽象方法。类:如果一个类里有抽象方法,那么这个类只能是抽象类实现/继承:接口可继承接口,并可多继承接口,但类只能单继承。
设计理念区别:
抽象类的意义是描述一类事物,接口是描述一类事物的一类固定动作
抽象类是对类抽象,包括属性和行为
接口是对行为抽象,主要是行为
后面有的门需要报警如何处理?
三个方法声明在抽象类中:问题是所有的门都得实现报警方法。三个方法声明在接口中:所有实现类都得实现开关门接口,有的门只有报警功能。
聊聊Java8接口中的default和static方法_zab635590867的博客-CSDN博客_接口中的default方法和static方法
接口中的方法_sinat_34089391的博客-CSDN博客_接口中的方法
java8中接口default、static新特性,与抽象类区别_zyq_2014的博客-CSDN博客_抽象类default
java中接口详解_sun_shine56的博客-CSDN博客_java接口
【JAVA】接口中的default和static方法_Z小旋-CSDN博客_defaultstatic
Java8——抽象类+接口_小金是个小菜鸡-CSDN博客
文章为作者独立观点,不代表股票交易接口观点