省东 2022-06-09 16:06 采纳率: 71.4%
浏览 68
已结题

求问这语句为什么要这么写?

private List allBg=new ArrayList<>();
上面这条语句,它定义了allBg这个List接口类型的变量,并新建一个实现类ArrayList的对象赋给这个变量。那为什么不直接写成这样:private ArrayList allBg=new ArrayList<>()?
第一种写法是有什么用意或者好处,为什么我看很多范例都会这么写,而不是直接写第二种?明明第二种也是一样正确,而且更容易理解。还是只是一个大家约定俗成的习惯,没有什么理由?

  • 写回答

3条回答 默认 最新

  • Jake_Sully 2022-06-09 16:49
    关注

    先了解多态;List有多个实现类,ArrayList是查询快,增删慢,如果我想增删快改成用LinkedList怎么办,如果之前用了ArrayList的特有方法,变成LinkedList后ArrayList的特有方法就不行了,这就有的改了,这就是多态的一个好处,无论后边怎么样,我用的都是前边的方法
    多态优点:

    1. 消除类型之间的耦合关系
    2. 可替换性
    3. 可扩充性
    4. 接口性
    5. 灵活性
    6. 简化性
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月18日
  • 已采纳回答 6月10日
  • 创建了问题 6月9日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分