内容简介:Java基础知识:多态
多态性是指允许不同类型的对象对同一消息做出相应。具有灵活性、抽象、行为共享、代码共享的优势,共享就意味着最大化利用和简洁,还有就是加载速度。
一、多态的作用
消除类型之间的耦合关系。即同一事件发生在不同的对象上会产生不同的结果。
二、多态的实现形式
1.重载(发生在同一个类中)
2.覆盖(发生在子类中)
三、多态的好处
1.可替换性
2.可扩展性
3.接口性(多态是超累通过方法签名,向子类提供了一个共同的接口)
4.简洁性
5.灵活性
注意:这些好处说起来比较虚,只有你真正应用的时候才能体会得到。
四、多态存在的三个前提
1.要有继承关系
2.子类要重写父类的方法
3.父类引用指向子类对象
代码举例说明:定义一个父类Animal,一个子类Dog
1 //父类——Animal
2 public class Animal {
3 int num = 44;
4 static int age = 2;
5
6 public void eat() {
7 System.out.println("动物都需要吃东西");
8 }
9
10 public static void sleep() {
11 System.out.println("动物需要睡觉");
12 }
13
14 public void run() {
15 System.out.println("长腿的动物爱奔跑");
16 }
17 }
1 //子类——Dog
2 public class Dog extends Animal {
3 int num = 5;
4 static int age = 5;
5 String name = "Tom";
6
7 public void eat() {
8 System.out.println("我爱吃狗粮");
9 }
10
11 public static void sleep() {
12 System.out.println("我是一只不爱睡觉的活泼狗狗");
13 }
14
15 public void catchMouse() {
16 System.out.println("我喜欢多管闲事");
17 }
18
19 }
1 //测试类
2 public class Demo_Test {
3 public static void main(String[] args) {
4 Animal a = new Dog();
5 a.eat();
6 a.sleep();
7 a.run();
8
9 System.out.println(a.num);
10 System.out.println(a.age);
11 }
12 }
注意事项演示:
从上面的打印结果(7),我们可以得出:
1)成员变量:打印父类,子类没有出来;
2)成员方法:父类为静态的就打印父类,非静态的直接打印子类;
3)在左侧5、6中有报错,是因为我们在调用静态成员时使用的方法不对。(下面会截图演示正确的)
4)当调用父类里没有的方法时(a.catchMouse();),会报错。)
此时,多态不能使用自己特有的属性和方法,这是多态的弊端,那要如何解决呢?
答案:把这个父类引用指向子类对象a,再强制变回Dog类型。这样a就是Dog类型的引用了,指向的也是Dog对象了。
本文永久更新链接地址 : http://www.linuxidc.com/Linux/2017-06/144872.htm
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
ES6 标准入门(第2版)
阮一峰 / 电子工业出版社 / 2016-1 / 69.00元
ES6(又名 ES2105)是 JavaScript 语言的新标准,2015 年 6 月正式发布后,得到了迅速推广,是目前业界超级活跃的计算机语言。《ES6标准入门(第2版)》是国内仅有的一本 ES6 教程,在前版基础上增补了大量内容——对标准进行了彻底的解读,所有新增的语法知识(包括即将发布的 ES7)都给予了详细介绍,并且紧扣业界开发实践,给出了大量简洁易懂、可以即学即用的示例代码。 《......一起来看看 《ES6 标准入门(第2版)》 这本书的介绍吧!