java多态基础_Java基础——多态

多态性是指允许不同类型的对象对同一消息做出相应。具有灵活性、抽象、行为共享、代码共享的优势,共享就意味着最大化利用和简洁,还有就是加载速度。

一、多态的作用

消除类型之间的耦合关系。即同一事件发生在不同的对象上会产生不同的结果。

二、多态的实现形式

1.重载(发生在同一个类中)

2.覆盖(发生在子类中)

三、多态的好处

1.可替换性

2.可扩展性

3.接口性(多态是超累通过方法签名,向子类提供了一个共同的接口)

4.简洁性

5.灵活性

注意:这些好处说起来比较虚,只有你真正应用的时候才能体会得到。

四、多态存在的三个前提

1.要有继承关系

2.子类要重写父类的方法

3.父类引用指向子类对象

代码举例说明:定义一个父类Animal,一个子类Dog

1 //父类——Animal

2 public classAnimal {3 int num = 44;4 static int age = 2;5

6 public voideat() {7 System.out.println("动物都需要吃东西");8 }9

10 public static voidsleep() {11 System.out.println("动物需要睡觉");12 }13

14 public voidrun() {15 System.out.println("长腿的动物爱奔跑");16 }17 }

1 //子类——Dog

2 public class Dog extendsAnimal {3 int num = 5;4 static int age = 5;5 String name = "Tom";6

7 public voideat() {8 System.out.println("我爱吃狗粮");9 }10

11 public static voidsleep() {12 System.out.println("我是一只不爱睡觉的活泼狗狗");13 }14

15 public voidcatchMouse() {16 System.out.println("我喜欢多管闲事");17 }18

19 }

1 //测试类

2 public classDemo_Test {3 public static voidmain(String[] args) {4 Animal a = newDog();5 a.eat();6 a.sleep();7 a.run();8

9 System.out.println(a.num);10 System.out.println(a.age);11 }12 }

2917b044a44e1ef40a80d37c360930f0.png

注意事项演示:

ac65bf005c895471347ccee27930dbec.png

从上面的打印结果(7),我们可以得出:

1)成员变量:打印父类,子类没有出来;

2)成员方法:父类为静态的就打印父类,非静态的直接打印子类;

3)在左侧5、6中有报错,是因为我们在调用静态成员时使用的方法不对。(下面会截图演示正确的)

3c736c4a11f467552a8aea07353fb1ad.png

4)当调用父类里没有的方法时(a.catchMouse();),会报错。)

c4e54e304d1f7c05a8049ee1081a36f6.png

此时,多态不能使用自己特有的属性和方法,这是多态的弊端,那要如何解决呢?

答案:把这个父类引用指向子类对象a,再强制变回Dog类型。这样a就是Dog类型的引用了,指向的也是Dog对象了。

b001bbd4da4958c48cffe0f81c77d94a.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值