Java8基础(1):接口中的default和static方法

x33g5p2x  于2021-12-27 转载在 Java  
字(2.2k)|赞(0)|评价(0)|浏览(412)

1、Java8接口

  • 常量: public static final
  • 抽象方法:public abstract
  • 默认方法:defalut ,子类可以重写也可以不重写
  • 静态方法:static

  1. public interface Shape {
  2. int length = 0;//常量 public static final
  3. Double getArea(double length, double width);//抽象方法 public abstract
  4. //问题:所有子类必须都要实现该方法
  5. //Double getPerimeterOfQuadrilateral(double length, double width);
  6. /**
  7. * 新增默认方法,为圆形计算周长
  8. *
  9. * @param redius 半径
  10. * @return java.lang.Double
  11. */
  12. default Double getPerimeterOfCircle(double redius) {
  13. return 3.14 * 2 * redius;
  14. }
  15. /**
  16. * 新增默认方法,为四边形扩展计算周长
  17. *
  18. * @param length 长
  19. * @param width 款
  20. * @return java.lang.Double
  21. */
  22. default Double getPerimeterOfQuadrilateral(double length, double width) {
  23. return (length + width) * 2;
  24. }
  25. default void print(){}//默认方法空实现
  26. /**
  27. * 接口描述方法,描述接口用途及其他信息
  28. *
  29. * @return java.lang.String
  30. */
  31. static String describe() {
  32. return "我是一个几何图形接口";
  33. }
  34. }
  1. public class Circle implements Shape {
  2. @Override
  3. public Double getArea(double length, double width) {
  4. //调用方法时默认length传半径
  5. return 3.14 * length * length;
  6. }
  7. public String staticMethod() {
  8. return Shape.describe();
  9. }
  10. }
  11. public class Trangle implements Shape{
  12. @Override
  13. public Double getArea(double length, double width) {
  14. return length * width / 2;
  15. }
  16. }
  1. public class DefaultMethodTest {
  2. public static void main(String[] args) {
  3. System.out.println(new Circle().getPerimeterOfCircle(3));
  4. System.out.println("-------------------------------------------");
  5. System.out.println(Shape.describe());//我是一个几何图形接口
  6. System.out.println(new Circle().staticMethod());//我是一个几何图形接口
  7. }
  8. }

2、抽象类

  • 常量
  • 变量
  • 构造方法
  • 抽象方法
  • 非抽象方法

3、接口和抽象类区别

抽象类和接口的详解(实例)_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

相关文章

最新文章

更多