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中接口(interface)详解_sun_shine56的博客-CSDN博客_java 接口
【JAVA】接口中的default和static方法_Z小旋-CSDN博客_default static
Java8——抽象类+接口_小金是个小菜鸡-CSDN博客
Java 中extends与implements使用方法_chen_chun_guang的专栏-CSDN博客_extends implements
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/mingyuli/article/details/122158942
内容来源于网络,如有侵权,请联系作者删除!