Java-多态

1.多态是什么

编程语言类型论中,多态指为不同数据类型的实体提供统一的接口。多态类型可以将自身所支持的操作套用到其它类型的值上。

计算机程序运行时,相同的消息可能会送给多个不同的类别之对象,而系统可依据对象所属类别,引发对应类别的方法,而有不同的行为。

简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作,也即同一种事物的多种表现形式,可以把多种子类都当做父类来看,统一标准

 

2.多态实现的前提

1).继承:有父类及对应子类

2).重写:子类重写父类的方法

3.多态的特点

Animal a = new Cat();

1).父类引用指向子类对象

2).编译看左边,运行看右边

多态的根本目的是让一个类的功能有多种实现方式,
左边-"父类引用": Animal a是因为我们要多态的目标类是Animal类,即我们是想让Animal有多种实现方式
右边-"子类对象":class Cat()[使用Cat类来创建对象],其根本作用是用来提供父类需要重写的功能

4.多态的使用

1).成员变量:父类

2).成员方法:父类的声明,子类的实现

3).静态资源:如果父子类有同名静态方法,则使用的是父类的

 

测试代码如下:

 1 package cn.xxm.oop;
 2 /**本类用于测试多态*/
 3 public class TestDemo1_1 {
 4     public static void main(String[] args) {
 5         //5.创建父类对象进行测试
 6         Animal8 a = new Animal8();
 7         a.eat();
 8         //父类调用子类方法进行测试
 9         //a.jump;//父类无法直接使用子类特有的功能
10         
11         //7.创建子类对象进行测试
12         Cat8 c = new Cat8();
13         c.eat();//小猫Cat8爱吃小鱼干~,调用的是子类重写以后的功能
14         c.jump();
15         
16         //8.创建多态对象进行测试
17         /**口诀1:父类引用指向子类对象
18          * 口诀2:编译看左边,运行看右边*/
19         Animal8 a8 = new Cat8();
20         a8.eat();//小猫Cat8爱吃小鱼干~,调用的是子类重写以后的功能
21         //a8.jump;//多态对象无法调用子类特有的功能
22         
23         Animal8 d = new Dog8();
24         d.eat();//小狗Dog8爱吃肉骨头~~
25         /**多态的出现是为了统一调用标准,向父类看齐
26          * 父类提供且被子类重写的功能才能使用,子类独有的功能无法使用*/
27     }
28 }
29 //1.创建父类
30 class Animal8{
31     //3.创建父类的普通成员方法eat
32     public void eat() {
33         System.out.println("小动物吃啥都行~");
34     }
35 }
36 //2.创建子类
37 class Cat8 extends Animal8{
38     //4.重写父类的方法--对父类中的代码进行修改
39     /**重写的规则:
40      * 子类权限修饰符>=父类的权限修饰符
41      * 方法签名(返回值类型&方法名&参数列表)保持一致*/
42     public void eat() {
43         System.out.println("小猫Cat8爱吃小鱼干~");
44     }
45     //6.创建子类特有方法
46     public void jump() {
47         System.out.println("小猫Cat8跳的老高了!");
48     }
49 }
50 //9.创建子类Dog8
51 class Dog8 extends Animal8{
52     public void eat() {
53         System.out.println("小狗Dog8爱吃肉骨头~~");
54     }
55 }

 

posted @ 2021-05-13 20:45  希小木  阅读(88)  评论(0编辑  收藏  举报