Java核心技术第六章--接口

一、接口

1.1、接口概念
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
1.2、接口与类相似点
一个接口可以有多个方法。
接口文件保存在 .java 结尾的文件中,文件名使用接口名。
接口的字节码文件保存在 .class 结尾的文件中。
接口相应的字节码文件必须在与包名称相匹配的目录结构中。
1.3、接口与类的区别
接口不能用于实例化对象。
接口没有构造方法。
接口中所有的方法必须是抽象方法。
接口不能包含成员变量,除了 static 和 final 变量。
接口不是被类继承了,而是要被类实现。
接口支持多继承。
1.4、接口特性
接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
接口中可以含有常量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
1.5、抽象类和接口的区别
抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的常量。
一个类只能继承一个抽象类,而一个类却可以实现多个接口。
1.6、静态方法与默认方法
1、静态方法
在Java SE 8中,允许在接口中增加静态方法。理论上讲 , 没有任何理由认为这是不合法的。只是这有违于将接口作为抽象规范的初衷 。
public interface A {
    static String aa(){
        return "my is A aa";
    }
}

A.aa();//my is A aa
2、默认方法
Java 8 允许给接口添加一个非抽象的方法实现,只需要使用 default 关键字即可,这个特征又叫做扩展方法(也称为默认方法或虚拟扩展方法或防护方法)。在实现该接口时,该默认扩展方法在子类上可以直接使用,它的使用方式类似于抽象类中非抽象成员方法。

默认方法允许我们在接口里添加新的方法,而不会破坏实现这个接口的已有类的兼容性,也就是说不会强迫实现接口的类实现默认方法。

默认方法和抽象方法的区别是抽象方法必须要被实现,默认方法不是。作为替代方式,接口可以提供一个默认的方法实现,所有这个接口的实现类都会通过继承得到这个方法(如果有需要也可以重写这个方法)
public interface A {
    static String aa(){
        return "my is A aa";
    }
    String bb();
    default String cc(){
        return "my is A cc";
    };
    default String dd(){
        return "my is A dd";
    };
}
public class B implements  A{
    @Override
    public String bb() {
        return "my is B bb";
    }
    @Override
    public String cc(){
        return "my is B cc";
    }
}
3、默认方法冲突
如果先在一个接口中将一个方法定义为默认方法,然后又在超类或另一个接口中定义了同样的方法,就会产生一个二义性错误.对于解决这个问题,java提供了相对简单的规则.
1)、超类优先.如果超类提供了一个具体方法,同名并且有相同参数的默认方法会被忽略
2)、接口冲突.如果一个接口提供了一个默认方法,另一个接口提供了一个同名而且参数类型相同的方法,必须覆盖这个方法来解决冲突

转载于:https://www.cnblogs.com/shaoyu/p/11576704.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,基于Java和MySQL的婴幼儿产品在线商城,一般需要经历以下几个步骤: 1.需求分析和系统设计 需要对商城的功能和需求进行分析和设计,包括用户登录注册、商品展示、购物车、订单管理、支付等。同时,需要考虑系统的架构和数据库设计,确定系统的开发技术栈和框架。 2.后台系统开发 后台系统是整个商城的核心,负责商品管理、订单管理、用户管理等后台管理功能的实现。一般采用Java EE技术栈,使用Spring、SpringMVC和MyBatis等框架来实现后台系统。 3.前台系统开发 前台系统是用户访问的主要界面,包括商品展示、购物车、订单管理等功能。一般使用JavaJavaScript等技术栈,使用Spring Boot和Thymeleaf等框架来实现前台系统。 4.数据库设计和开发 数据库是整个商城系统的核心,需要设计适当的数据库表结构,包括商品表、订单表、用户表等。一般使用MySQL作为数据库,使用JDBC或MyBatis等框架来实现数据库操作。 5.支付接口集成 为了实现在线支付功能,需要集成支付接口,如支付宝、微信支付等,实现支付功能。一般使用第三方支付SDK来实现支付接口集成。 6.系统测试和上线 完成以上开发工作后,需要进行系统测试,包括单元测试、集成测试和系统测试等,确保系统的正确性和稳定性。测试通过后,将系统部署到服务器上进行上线。 总结来说,实现基于Java和MySQL的婴幼儿产品在线商城需要使用Java EE技术栈、Spring、SpringMVC、MyBatis、Spring Boot、Thymeleaf、MySQL等技术和框架,同时需要集成支付接口,完成系统测试和上线部署。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值