多态
Java的四大特性,抽象,继承,封装,多态。
我对多态的理解
产生多态的三个条件
1)必须要有继承
2)子类必须重写父类的方法
3)父类的引用(实例)指向子类对象
多态又叫动态绑定,绑定在方法上(所以这里就需要重写那个产生多态的方法了)
1 //多态最终版 2 public class TestPoly { 3 public static void main(String[] args) { 4 Person.grown(); 5 Tiger tiger = new Tiger("老虎", 3,"yellow"); 6 System.out.println(tiger.getName()+tiger.getAge()+tiger.getColor()); 7 tiger.eat(); //当我们重写了父类的方法,就会表现出自己的特征 8 //1.Tiger是继承Animal 9 //2.Tiger类中重写了Animal中的eat()方法 10 //3.父类的引用(实例),指向了子类对象 11 Animal tiger1 = new Tiger("测试多态的老虎", 100, "red"); 12 System.out.println(tiger1.getName()+tiger1.getAge()); 13 //在这里就会报错,因为只有方法有多态性(方法是动态绑定),变量是静态绑定的 14 //System.out.println(tiger1.getColor()); 15 tiger1.eat(); 16 } 17 } 18 class Animal{ 19 private String name; 20 private int age; 21 public Animal(String name,int age) { 22 this.name = name; 23 this.age = age; 24 } 25 public void eat() { 26 System.out.println("我是动物吃东西的方法"); 27 } 28 public String getName() { 29 return name; 30 } 31 public void setName(String name) { 32 this.name = name; 33 } 34 public int getAge() { 35 return age; 36 } 37 public void setAge(int age) { 38 this.age = age; 39 } 40 } 41 class Tiger extends Animal{ 42 43 private String color; 44 public Tiger(String name, int age) { 45 super(name, age); 46 } 47 public Tiger(String name, int age,String color) { 48 super(name, age); 49 this.color = color; 50 } 51 //本来我们可以继承到eat()方法,但是我们还是想要重新,完成子类独有的特征 52 public void eat() { 53 System.out.println("我是老虎类的吃东西方法"); 54 } 55 public String getColor() { 56 return color; 57 } 58 public void setColor(String color) { 59 this.color = color; 60 } 61 }
浙公网安备 33010602011771号