多态性
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 }
以上是关于多态性的主要内容,如果未能解决你的问题,请参考以下文章