Java之继承、组合、多态

一、Java继承与组合:
首先,继承与组合区别可以形象的用Is-a和Has-a来形象表示:
1.继承可以看作Is-a:如果类A和B是继承关系,且B继承A类,那么就可以说B是A,例如狗是宠物,由于子类是从父类那里继承得来的,所以子类可以说是父类的一个具体分支。此外,在继承的情况下,子类可以覆盖父类的实例方法,但这不适用于组合的情况。
2.而具有组合关系的类之间可以用Has-a来说明:如果A类和B类组合到一起使用,那么他们之间就可以说是A中含有B或者B中含有A,例如房屋有一个窗户,B类是A类的一部分,但不能说B类是A类。B和A之间是所属关系。
这些区别直接决定了二者之间的不同使用场景。
二、java多态:
多态是指在一个程序中同名但不同方法共存的情况,方法同名表示他们的最终功能和目的相同,但是由于在完成同一功能时可能会遇到不同的具体情况,所以要定义含有不同内容的方法。Java的多态机制有两种:重载与覆盖。
1.重载:在类中定义了多个同名而不同内容参数的成员方法时,称这些方法是重载。
下面是一个例子:
在这里插入图片描述

重载过程中有一些事项需要注意:
(1)在Java中,同名同参数但不同类型返回值的方法不是重载,编译不能通过。
(2)代码编写中,重载的多个方法之间往往存在一定的调用关系,即一个方法写有实现功能,其他方法采用委托方式进行调用一一体现了程序共享的设计思想。
2.覆盖:子类对父类参数相同,返回值类型相同的同名方法重新进行定义,这种多态被称为覆盖。
下图是一个重载的例子:在这里插入图片描述

覆盖需要注意的地方:
(1)子类方法覆盖父类方法,子类的访问修饰符权限应等于或大于父类。
(2)同名的static方法和非static方法不能互相覆盖
(3)当方法前有final修饰符时,此方法不能在子类中进行覆盖。
(4)JDK当中,很多父类的方法被子类重新覆盖,赋予了不同的含义。例如Object中的方法boolean equals(Object obj),是比较两个对象引用是否相同,而一些子类如Integer或String,将他们覆盖,此时虽然传入的是对象,但是比较的是对象所代表的值。
(5)抽象类中如果存在抽象方法,则具体子类必须对抽象方法进行覆盖。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值