多态性

Posted fkuennhvo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多态性相关的知识,希望对你有一定的参考价值。




lesson Eleven                        2018-04-30  22:34:59




多态性

1.多态性指的是什么?   多态性,可以理解为一个事物的多种表现形态。

  1.1方法的重载与重写

  1.2子类对像的多态性

2.子类对像的多态性使用的前提

  2.1要有类的继承

  2.2要有子类对父类方法的重写

3.程序运行分为编译状态和运行状态

  如:Person p = new Person();

  3.1对于多态性来说,编译时,检测等号左边,将此引用变量理解为父类的类型。

  3.2对于多态性来说,运行时,检测等号右边,关注于真正对像的实体,子类的对像。执行的方法

技术分享图片
 1 public class Person {
 2     private String name;
 3     private int age;
 4     int id = 1001;
 5 
 6     public String getName() {
 7         return name;
 8     }
 9 
10     public void setName(String name) {
11         this.name = name;
12     }
13 
14     public int getAge() {
15         return age;
16     }
17 
18     public void setAge(int age) {
19         this.age = age;
20     }
21 
22     public void eat() {
23         System.out.println("eating");
24     }
25 
26     public void walk() {
27         System.out.println("walking");
28     }
29 
30 }
父类

4.虚拟方法调用:通过父类的引用指向子类的对像实体,当调用方法时,实际执行的是子类重写父类的方法

5.父类引用指向子类实体后,不可以调用子类独有的方法和属性。

6.子类对像的多态性并不适用于属性。

技术分享图片
 1 public class man extends Person {
 2 
 3     int id = 1002;
 4 
 5     public void eat() {
 6         System.out.println("man is eaeting!");
 7     }
 8 
 9     public void walk() {
10         System.out.println("man is walking");
11     }
12 
13     public void playGame() {
14         System.out.println("man is playing games");
15     }
16 }
子类

技术分享图片
 1 public static void main(String[] args) {
 2         Person p = new Person();
 3         p.eat();
 4         p.walk();
 5         System.out.println();
 6 
 7         man m = new man();
 8         m.eat();
 9         m.walk();
10         System.out.println();
11         
12         //子类对像的多态性:父类的引用指向子类对像
13         Person p1 = new man();
14         //虚拟方法调用:通过父类的引用指向子类的对像实体,当调用方法时,实际执行的是子类重写父类的方法
15         p1.walk();
16         p1.eat();
17         System.out.println(p.id);
18 //        p1.playGame();
19 //        不可以调用子类独有的方法和属性。
20     }
主方法



 

以上是关于多态性的主要内容,如果未能解决你的问题,请参考以下文章

多态性和动态铸造

java中封装,继承,多态,接口学习总结

什么是SNP(Single Nucleotide Polymorphism)?

C/C++编程笔记:C++中的函数重载和浮动

基于的ssr 遗传多样性分析

SSR技术原理是啥?